[arch-commits] Commit in gpicview/trunk (PKGBUILD fix-scrolling.patch)
Balló György
bgyorgy at nymeria.archlinux.org
Mon Sep 2 21:25:56 UTC 2013
Date: Monday, September 2, 2013 @ 23:25:56
Author: bgyorgy
Revision: 96671
upgpkg: gpicview 0.2.3-2
- Switch to upstream source
- Fix scrolling (FS#34872)
- Apply one main category only (FS#34684)
Added:
gpicview/trunk/fix-scrolling.patch
Modified:
gpicview/trunk/PKGBUILD
---------------------+
PKGBUILD | 18 +++++-
fix-scrolling.patch | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 164 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2013-09-02 21:17:56 UTC (rev 96670)
+++ PKGBUILD 2013-09-02 21:25:56 UTC (rev 96671)
@@ -5,7 +5,7 @@
pkgname=gpicview
pkgver=0.2.3
-pkgrel=1
+pkgrel=2
pkgdesc="lightweight image viewer"
arch=('i686' 'x86_64')
license=('GPL2')
@@ -15,9 +15,21 @@
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"
./configure --sysconfdir=/etc --prefix=/usr
Added: fix-scrolling.patch
===================================================================
--- fix-scrolling.patch (rev 0)
+++ fix-scrolling.patch 2013-09-02 21:25:56 UTC (rev 96671)
@@ -0,0 +1,149 @@
+From 88e76ee77d7271820dfad4b66ea1ca892e1a1ae0 Mon Sep 17 00:00:00 2001
+From: Vadim Ushakov <igeekless at 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
+
More information about the arch-commits
mailing list