summaryrefslogtreecommitdiff
path: root/extra/geeqie
diff options
context:
space:
mode:
Diffstat (limited to 'extra/geeqie')
-rw-r--r--extra/geeqie/PKGBUILD11
-rw-r--r--extra/geeqie/geeqie-fix-fullscreen.patch143
2 files changed, 150 insertions, 4 deletions
diff --git a/extra/geeqie/PKGBUILD b/extra/geeqie/PKGBUILD
index 056678ba0..5c65d5f78 100644
--- a/extra/geeqie/PKGBUILD
+++ b/extra/geeqie/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 165236 2012-08-14 01:43:09Z eric $
+# $Id: PKGBUILD 168110 2012-10-06 01:00:22Z eric $
# Maintainer: Eric BĂ©langer <eric@archlinux.org>
# Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com>
pkgname=geeqie
pkgver=1.1
-pkgrel=1
+pkgrel=2
pkgdesc="A lightweight image browser and viewer"
arch=('i686' 'x86_64')
url="http://geeqie.sourceforge.net/"
@@ -13,11 +13,14 @@ depends=('exiv2' 'gtk2' 'lcms' 'desktop-file-utils')
makedepends=('intltool' 'doxygen' 'gnome-doc-utils')
optdepends=('librsvg: SVG rendering')
install=geeqie.install
-source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
-sha1sums=('77167479e91e03d9512535a146c5d2d77941257f')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ geeqie-fix-fullscreen.patch)
+sha1sums=('77167479e91e03d9512535a146c5d2d77941257f'
+ '57c8b058e6ec1fc2f691650b212acc5dafcd5891')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i"${srcdir}/geeqie-fix-fullscreen.patch"
CPPFLAGS="-D_FILE_OFFSET_BITS=64" ./configure --prefix=/usr
make
}
diff --git a/extra/geeqie/geeqie-fix-fullscreen.patch b/extra/geeqie/geeqie-fix-fullscreen.patch
new file mode 100644
index 000000000..0547395a3
--- /dev/null
+++ b/extra/geeqie/geeqie-fix-fullscreen.patch
@@ -0,0 +1,143 @@
+Description: Make fullscreen modes actually use the full screen.
+ The default fullscreen mode now leaves everything up to the window manager,
+ which usually produces the best result. Custom fullscreen modes now use
+ override-redirect to ensure docks and panels never obscure the image.
+Author: Daniel van Vugt <vanvugt@gmail.com>
+Bug: http://sourceforge.net/support/tracker.php?aid=2925034
+Bug-Ubuntu: https://launchpad.net/bugs/788321
+Forwarded: yes
+
+=== modified file 'src/fullscreen.c'
+--- old/src/fullscreen.c 2010-02-26 10:41:38 +0000
++++ new/src/fullscreen.c 2011-08-16 03:55:04 +0000
+@@ -218,75 +218,65 @@
+ void (*stop_func)(FullScreenData *, gpointer), gpointer stop_data)
+ {
+ FullScreenData *fs;
+- GdkScreen *screen;
+- gboolean same;
+- gint x, y;
+- gint w, h;
+- GdkGeometry geometry;
+
+ if (!window || !imd) return NULL;
+
++ DEBUG_1("full screen requests screen %d", options->fullscreen.screen);
++
+ fs = g_new0(FullScreenData, 1);
+-
+ fs->cursor_state = FULLSCREEN_CURSOR_HIDDEN;
+-
+ fs->normal_window = window;
+ fs->normal_imd = imd;
+-
+ fs->stop_func = stop_func;
+ fs->stop_data = stop_data;
+-
+- DEBUG_1("full screen requests screen %d", options->fullscreen.screen);
+- fullscreen_prefs_get_geometry(options->fullscreen.screen, window, &x, &y, &w, &h,
+- &screen, &same);
+-
+- fs->window = window_new(GTK_WINDOW_TOPLEVEL, "fullscreen", NULL, NULL, _("Full screen"));
+-
+- /* this requests no decorations, if you still have them complain to the window manager author(s) */
+- gtk_window_set_decorated(GTK_WINDOW(fs->window), FALSE);
++ fs->window = window_new(GTK_WINDOW_TOPLEVEL, "fullscreen", NULL, NULL,
++ _("Full screen"));
+
+ if (options->fullscreen.screen < 0)
+- {
+- /* If we want control of the window size and position this is not what we want.
+- * Geeqie needs control of which monitor(s) to use for full screen.
+- */
++ { /* Fullscreen as determined by the window manager... */
+ gtk_window_fullscreen(GTK_WINDOW(fs->window));
+ }
+- else if (options->fullscreen.above)
+- {
+- /* request to be above other windows */
+- gtk_window_set_keep_above(GTK_WINDOW(fs->window), TRUE);
++ else
++ { /* Custom fullscreen modes. Done by hand, the hard way... */
++ GdkScreen *screen;
++ gint x, y, w, h;
++ GdkGeometry geometry;
++ GtkWindow *gtkwin = GTK_WINDOW(fs->window);
++ GdkWindow *gdkwin;
++
++ fullscreen_prefs_get_geometry(options->fullscreen.screen,
++ window, &x, &y, &w, &h, &screen, NULL);
++
++ if (options->fullscreen.above)
++ gtk_window_set_keep_above(gtkwin, TRUE);
++
++ gtk_window_set_screen(gtkwin, screen);
++ gtk_window_set_decorated(gtkwin, FALSE);
++ gtk_window_set_resizable(gtkwin, FALSE);
++ gtk_container_set_border_width(GTK_CONTAINER(fs->window), 0);
++
++ geometry.min_width = w;
++ geometry.min_height = h;
++ geometry.max_width = w;
++ geometry.max_height = h;
++ geometry.base_width = w;
++ geometry.base_height = h;
++ gtk_window_set_geometry_hints(gtkwin, fs->window, &geometry,
++ GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE |
++ GDK_HINT_BASE_SIZE);
++
++ gtk_window_set_default_size(gtkwin, w, h);
++ gtk_window_move(gtkwin, x, y);
++
++ gtk_widget_realize(fs->window);
++ gdkwin = gtk_widget_get_window(fs->window);
++ if (gdkwin != NULL)
++ gdk_window_set_override_redirect(gdkwin, TRUE);
+ }
+
+- gtk_window_set_resizable(GTK_WINDOW(fs->window), FALSE);
+-
+- gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
+- gtk_container_set_border_width(GTK_CONTAINER(fs->window), 0);
+ g_signal_connect(G_OBJECT(fs->window), "delete_event",
+ G_CALLBACK(fullscreen_delete_cb), fs);
+
+- geometry.min_width = w;
+- geometry.min_height = h;
+- geometry.max_width = w;
+- geometry.max_height = h;
+- geometry.base_width = w;
+- geometry.base_height = h;
+- geometry.win_gravity = GDK_GRAVITY_STATIC;
+- /* By setting USER_POS and USER_SIZE, most window managers will
+- * not request positioning of the full screen window (for example twm).
+- *
+- * In addition, setting gravity to STATIC will result in the
+- * decorations of twm to not effect the requested window position,
+- * the decorations will simply be off screen, except in multi monitor setups :-/
+- */
+- gtk_window_set_geometry_hints(GTK_WINDOW(fs->window), fs->window, &geometry,
+- GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE | GDK_HINT_BASE_SIZE |
+- GDK_HINT_WIN_GRAVITY |
+- GDK_HINT_USER_POS);
+-
+- gtk_window_set_default_size(GTK_WINDOW(fs->window), w, h);
+- gtk_window_move(GTK_WINDOW(fs->window), x, y);
+-
+ fs->imd = image_new(FALSE);
+
+ gtk_container_add(GTK_CONTAINER(fs->window), fs->imd->widget);
+@@ -393,7 +383,11 @@
+ else
+ {
+ gdk_screen_get_monitor_geometry(screen, j, &rect);
+- subname = g_strdup_printf("%s %d", _("Monitor"), j + 1);
++ subname = gdk_screen_get_monitor_plug_name(screen, j);
++ if (subname == NULL)
++ {
++ subname = g_strdup_printf("%s %d", _("Monitor"), j + 1);
++ }
+ }
+
+ sd = g_new0(ScreenData, 1);
+