Tags: patch

Hi!

The refreshed (for geeqie 1.2-1) fix-fullscreen.patch is broken. The
fixed one is attached.

Thanks,
Andrey
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 <vanv...@gmail.com>
Author: Andrey Gursky <andrey.gur...@e-mail.ua>
Bug: http://sourceforge.net/support/tracker.php?aid=2925034
Bug-Ubuntu: https://launchpad.net/bugs/788321
Forwarded: yes

=== modified file 'src/fullscreen.c'
--- a/src/fullscreen.c
+++ b/src/fullscreen.c
@@ -210,10 +210,6 @@ FullScreenData *fullscreen_start(GtkWidg
 				 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,8 +225,6 @@ FullScreenData *fullscreen_start(GtkWidg
 	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"));
 
@@ -246,43 +240,43 @@ FullScreenData *fullscreen_start(GtkWidg
 		}
 	else
 		{
-		gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
+		/* 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(GTK_WINDOW(fs->window), TRUE);
+			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_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);
-
-	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