[arch-commits] Commit in geeqie/trunk (PKGBUILD fix-fullscreen.patch)

Gaetan Bisson bisson at archlinux.org
Sun Aug 16 07:54:10 UTC 2015


    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);



More information about the arch-commits mailing list