Date: Thursday, October 29, 2015 @ 02:51:23
  Author: bisson
Revision: 249846

fix switching virtual desktops in fullscreen mode

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-10-28 22:49:11 UTC (rev 249845)
+++ PKGBUILD    2015-10-29 01:51:23 UTC (rev 249846)
@@ -4,7 +4,7 @@
 
 pkgname=geeqie
 pkgver=1.2.2
-pkgrel=1
+pkgrel=2
 pkgdesc="A lightweight image browser and viewer"
 arch=('i686' 'x86_64')
 url="http://www.geeqie.org/";
@@ -15,9 +15,16 @@
            'fbida: for jpeg rotation'
            'exiv2: for tiff and png rotation')
 install=geeqie.install
-source=(http://www.geeqie.org/${pkgname}-${pkgver}.tar.xz)
-sha1sums=('9dd094707d7bf7389eb62a218ff7bc86339fc995')
+source=(http://www.geeqie.org/${pkgname}-${pkgver}.tar.xz
+        fix-fullscreen.patch)
+sha1sums=('9dd094707d7bf7389eb62a218ff7bc86339fc995'
+          'dab15bbda9b329f663276b25bf1989b410596644')
 
+prepare() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -p1 -i ../fix-fullscreen.patch
+}
+
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
   ./configure --prefix=/usr

Added: fix-fullscreen.patch
===================================================================
--- fix-fullscreen.patch                                (rev 0)
+++ fix-fullscreen.patch        2015-10-29 01:51:23 UTC (rev 249846)
@@ -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