diff options
Diffstat (limited to 'extra/geeqie')
-rw-r--r-- | extra/geeqie/PKGBUILD | 11 | ||||
-rw-r--r-- | extra/geeqie/geeqie-fix-fullscreen.patch | 143 |
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); + |