summaryrefslogtreecommitdiff
path: root/community/gpicview
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-09-03 01:52:27 -0700
committerroot <root@rshg054.dnsready.net>2013-09-03 01:52:27 -0700
commit3aa73e2018f321c9ccff8eca801b1c2fa9f18fa8 (patch)
tree961d6e0475cac3875e6a31b558861367da0c93d8 /community/gpicview
parent53939c2b159d972c48fc2f3652408632c71be77b (diff)
Tue Sep 3 01:50:53 PDT 2013
Diffstat (limited to 'community/gpicview')
-rw-r--r--community/gpicview/PKGBUILD20
-rw-r--r--community/gpicview/fix-scrolling.patch149
2 files changed, 165 insertions, 4 deletions
diff --git a/community/gpicview/PKGBUILD b/community/gpicview/PKGBUILD
index ef08560b4..668131416 100644
--- a/community/gpicview/PKGBUILD
+++ b/community/gpicview/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 69882 2012-04-25 13:40:48Z bpiotrowski $
+# $Id: PKGBUILD 96672 2013-09-02 21:26:05Z bgyorgy $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Angel Velasquez <angvp@archlinux.org>
# Contributor: Geoffroy Carrier <geoffroy.carrier@koon.fr>
pkgname=gpicview
pkgver=0.2.3
-pkgrel=1
+pkgrel=2
pkgdesc="lightweight image viewer"
arch=('i686' 'x86_64')
license=('GPL2')
@@ -15,8 +15,20 @@ depends=('gtk2' 'desktop-file-utils')
install=$pkgname.install
makedepends=('pkgconfig' 'intltool')
optdepends=('librsvg: For SVG support')
-source=(http://ftp.de.debian.org/debian/pool/main/g/$pkgname/${pkgname}_${pkgver}.orig.tar.xz)
-md5sums=('0f1275b5b0ca66e48963a7ccda8a5019')
+source=(http://downloads.sourceforge.net/sourceforge/lxde/${pkgname}-${pkgver}.tar.gz
+ fix-scrolling.patch)
+md5sums=('bca9ffe1d283ed3dbb13bada7feb7e89'
+ 'f258a3e703c4daa2f79c0c9f5a625d86')
+
+prepare() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # Fix scrolling (FS#34872)
+ patch -Np1 -i "$srcdir/fix-scrolling.patch"
+
+ # Apply one main category only (FS#34684)
+ sed -i '/^Categories=/ s/Utility;//' gpicview.desktop.in
+}
build() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/community/gpicview/fix-scrolling.patch b/community/gpicview/fix-scrolling.patch
new file mode 100644
index 000000000..9323055ad
--- /dev/null
+++ b/community/gpicview/fix-scrolling.patch
@@ -0,0 +1,149 @@
+From 88e76ee77d7271820dfad4b66ea1ca892e1a1ae0 Mon Sep 17 00:00:00 2001
+From: Vadim Ushakov <igeekless@gmail.com>
+Date: Fri, 3 Aug 2012 22:43:29 +0800
+Subject: [PATCH] fix scrolling when scale == 1
+
+---
+ src/image-view.c | 98 ++++++++----------------------------------------------
+ 1 files changed, 14 insertions(+), 84 deletions(-)
+
+diff --git a/src/image-view.c b/src/image-view.c
+index cd40e3a..b367f2a 100644
+--- a/src/image-view.c
++++ b/src/image-view.c
+@@ -309,65 +309,6 @@ void image_view_paint( ImageView* iv, GdkEventExpose* evt )
+ {
+ // GdkRectangle& rect = rects[i];
+ paint( iv, rects + i, GDK_INTERP_NEAREST );
+-#if 0
+- g_debug("dirty dest: x=%d, y=%d, w=%d, h=%d\nx_off=%d, y_off=%d",
+- rect.x, rect.y, rect.width, rect.height, iv->img_area.x, iv->img_area.y );
+-
+- if( ! gdk_rectangle_intersect( &rect, &iv->img_area, &rect ) )
+- continue;
+-
+- int dest_x = rect.x;
+- int dest_y = rect.y;
+-
+- rect.x -= img_area.x;
+- rect.y -= img_area.y;
+-
+- GdkPixbuf* src_pix = NULL;
+- int src_x, src_y;
+- if( iv->scale == 1.0 ) // original size
+- {
+- src_pix = (GdkPixbuf*)g_object_ref( pix );
+- src_x = rect.x;
+- src_y = rect.y;
+- }
+- else // scaling is needed
+- {
+- GdkPixbuf* scaled_pix = NULL;
+- int src_w, src_h;
+- src_x = (int)floor( gdouble(rect.x) / scale + 0.5 );
+- src_y = (int)floor( gdouble(rect.y) / scale + 0.5 );
+- src_w = (int)floor( gdouble(rect.width) / scale + 0.5 );
+- src_h = (int)floor( gdouble(rect.height) / scale + 0.5 );
+- if( src_y > gdk_pixbuf_get_height(pix) )
+- src_y = gdk_pixbuf_get_height(pix);
+- if( src_x + src_w > gdk_pixbuf_get_width(pix) )
+- src_w = gdk_pixbuf_get_width(pix) - src_x;
+- if( src_y + src_h > gdk_pixbuf_get_height(pix) )
+- src_h = gdk_pixbuf_get_height(pix) - src_y;
+- g_debug("orig src: x=%d, y=%d, w=%d, h=%d",
+- src_x, src_y, src_w, src_h );
+-
+- src_pix = gdk_pixbuf_new_subpixbuf( pix, src_x, src_y, src_w, src_h );
+- scaled_pix = gdk_pixbuf_scale_simple( src_pix, rect.width, rect.height, interp_type );
+- g_object_unref( src_pix );
+- src_pix = scaled_pix;
+-
+- src_x = 0;
+- src_y = 0;
+- }
+-
+- if( G_LIKELY(src_pix) )
+- {
+- gdk_draw_pixbuf( widget->window,
+- widget->style->fg_gc[GTK_STATE_NORMAL],
+- src_pix,
+- src_x, src_y,
+- dest_x, dest_y,
+- rect.width, rect.height,
+- GDK_RGB_DITHER_NORMAL, 0, 0 );
+- g_object_unref( src_pix );
+- }
+-#endif
+ }
+ g_free( rects );
+
+@@ -525,28 +466,29 @@ void paint( ImageView* iv, GdkRectangle* invalid_rect, GdkInterpType type )
+ if( ! gdk_rectangle_intersect( invalid_rect, &iv->img_area, &rect ) )
+ return;
+
+- int dest_x = rect.x;
+- int dest_y = rect.y;
+-
+- rect.x -= iv->img_area.x;
+- rect.y -= iv->img_area.y;
++ int dest_x;
++ int dest_y;
+
+ GdkPixbuf* src_pix = NULL;
+- int src_x, src_y;
+ if( iv->scale == 1.0 ) // original size
+ {
+ src_pix = (GdkPixbuf*)g_object_ref( iv->pix );
+- src_x = rect.x;
+- src_y = rect.y;
++ dest_x = iv->img_area.x;
++ dest_y = iv->img_area.y;
+ }
+ else // scaling is needed
+ {
++ dest_x = rect.x;
++ dest_y = rect.y;
++
++ rect.x -= iv->img_area.x;
++ rect.y -= iv->img_area.y;
++
+ GdkPixbuf* scaled_pix = NULL;
+- int src_w, src_h;
+- src_x = (int)floor( ((gdouble)rect.x) / iv->scale + 0.5 );
+- src_y = (int)floor( ((gdouble)rect.y) / iv->scale + 0.5 );
+- src_w = (int)floor( ((gdouble)rect.width) / iv->scale + 0.5 );
+- src_h = (int)floor( ((gdouble)rect.height) / iv->scale + 0.5 );
++ int src_x = (int)floor( ((gdouble)rect.x) / iv->scale + 0.5 );
++ int src_y = (int)floor( ((gdouble)rect.y) / iv->scale + 0.5 );
++ int src_w = (int)floor( ((gdouble)rect.width) / iv->scale + 0.5 );
++ int src_h = (int)floor( ((gdouble)rect.height) / iv->scale + 0.5 );
+ if( src_y > gdk_pixbuf_get_height( iv->pix ) )
+ src_y = gdk_pixbuf_get_height( iv->pix );
+ if( src_x + src_w > gdk_pixbuf_get_width( iv->pix ) )
+@@ -564,23 +506,11 @@ void paint( ImageView* iv, GdkRectangle* invalid_rect, GdkInterpType type )
+ src_pix = scaled_pix;
+ }
+
+- src_x = 0;
+- src_y = 0;
+ }
+
+ if( G_LIKELY(src_pix) )
+ {
+ GtkWidget* widget = (GtkWidget*)iv;
+-/*
+- gdk_draw_pixbuf( widget->window,
+- widget->style->fg_gc[GTK_STATE_NORMAL],
+- src_pix,
+- src_x, src_y,
+- dest_x, dest_y,
+- rect.width, rect.height,
+- GDK_RGB_DITHER_NORMAL, 0, 0 );
+-*/
+- // New function with cairo
+ cairo_t *cr = gdk_cairo_create (gtk_widget_get_window(widget));
+ gdk_cairo_set_source_pixbuf (cr, src_pix, dest_x, dest_y);
+ cairo_paint (cr);
+--
+1.7.4.1
+