Date: Sunday, August 16, 2015 @ 09:54:10
  Author: bisson
Revision: 243781

apply updated fix-fullscreen.patch

Without it, one specific issue is that geeqie's fullscreen window appears on
all workspaces, not just the one geeqie belongs to (at least with dwm).

Added:
  geeqie/trunk/fix-fullscreen.patch
Modified:
  geeqie/trunk/PKGBUILD

----------------------+
 PKGBUILD             |   13 ++++-
 fix-fullscreen.patch |  107 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 117 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2015-08-16 07:14:59 UTC (rev 243780)
+++ PKGBUILD    2015-08-16 07:54:10 UTC (rev 243781)
@@ -4,7 +4,7 @@
 
 pkgname=geeqie
 pkgver=1.2
-pkgrel=1
+pkgrel=2
 pkgdesc="A lightweight image browser and viewer"
 arch=('i686' 'x86_64')
 url="http://www.geeqie.org/";
@@ -13,9 +13,16 @@
 makedepends=('intltool' 'doxygen' 'gnome-doc-utils' 'git')
 optdepends=('librsvg: SVG rendering')
 install=geeqie.install
-source=('git://www.geeqie.org/geeqie.git#commit=ca42d65be013f9bcded858b656c594d45c7f8e1d')
-sha1sums=('SKIP')
+source=('git://www.geeqie.org/geeqie.git#commit=ca42d65be013f9bcded858b656c594d45c7f8e1d'
+        'fix-fullscreen.patch')
+sha1sums=('SKIP'
+          'dab15bbda9b329f663276b25bf1989b410596644')
 
+prepare() {
+  cd "${srcdir}/${pkgname}"
+  patch -p1 -i ../fix-fullscreen.patch
+}
+
 build() {
   cd "${srcdir}/${pkgname}"
   ./autogen.sh --prefix=/usr

Added: fix-fullscreen.patch
===================================================================
--- fix-fullscreen.patch                                (rev 0)
+++ fix-fullscreen.patch        2015-08-16 07:54:10 UTC (rev 243781)
@@ -0,0 +1,107 @@
+diff -Naur old/src/fullscreen.c new/src/fullscreen.c
+--- old/src/fullscreen.c       2015-08-16 16:37:58.132952447 +0900
++++ new/src/fullscreen.c       2015-08-16 16:43:30.031882508 +0900
+@@ -210,10 +210,6 @@
+                                void (*stop_func)(FullScreenData *, gpointer), 
gpointer stop_data)
+ {
+       FullScreenData *fs;
+-      GdkScreen *screen;
+-      gint x, y;
+-      gint w, h;
+-      GdkGeometry geometry;
+       GdkWindow *gdkwin;
+ 
+       if (!window || !imd) return NULL;
+@@ -229,14 +225,9 @@
+       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, &fs->same_region);
+ 
+       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);
+-
+       if (options->fullscreen.screen < 0)
+               {
+               /* If we want control of the window size and position this is 
not what we want.
+@@ -246,9 +237,42 @@
+               }
+       else
+               {
+-              gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
++              GdkScreen *screen;
++              gint x, y;
++              gint w, h;
++              GdkGeometry geometry;
++
++              fullscreen_prefs_get_geometry(options->fullscreen.screen, 
window, &x, &y, &w, &h,
++                                            &screen, &fs->same_region);
++
+               if (options->fullscreen.above)
+                       gtk_window_set_keep_above(GTK_WINDOW(fs->window), TRUE);
++
++              gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
++              gtk_window_set_decorated(GTK_WINDOW(fs->window), FALSE);
++              gtk_window_set_resizable(GTK_WINDOW(fs->window), 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;
++              geometry.win_gravity = GDK_GRAVITY_STATIC;
++
++              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);
++      
++              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);
+@@ -256,33 +280,6 @@
+       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);
+-
+-      gtk_widget_realize(fs->window);
+-      gdkwin = gtk_widget_get_window(fs->window);
+-      if (gdkwin != NULL)
+-              gdk_window_set_override_redirect(gdkwin, TRUE);
+-
+       fs->imd = image_new(FALSE);
+ 
+       gtk_container_add(GTK_CONTAINER(fs->window), fs->imd->widget);

Reply via email to