changeset 2062:6e1f0c898e2e

Make fullscreen mode actually use the full screen. Use override-redirect to ensure fullscreen windows are drawn over any docks and panels. Bug: http://sourceforge.net/support/tracker.php?aid=2925034 Bug-Ubuntu: https://launchpad.net/bugs/788321
author Daniel van Vugt <vanvugt@gmail.com>
date Thu, 18 Aug 2011 22:43:29 +0200
parents eb8d6ab1344f
children 65b87aed4de5
files src/fullscreen.c
diffstat 1 files changed, 10 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/fullscreen.c	Tue Mar 08 20:51:56 2011 +0100
+++ b/src/fullscreen.c	Thu Aug 18 22:43:29 2011 +0200
@@ -215,6 +215,7 @@
 	gint x, y;
 	gint w, h;
 	GdkGeometry geometry;
+	GdkWindow *gdkwin;
 
 	if (!window || !imd) return NULL;
 
@@ -244,15 +245,14 @@
 		 */
 		gtk_window_fullscreen(GTK_WINDOW(fs->window));
 		}
-	else if (options->fullscreen.above)
+	else
 		{
-		/* request to be above other windows */
-		gtk_window_set_keep_above(GTK_WINDOW(fs->window), TRUE);
+		gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
+		if (options->fullscreen.above)
+			gtk_window_set_keep_above(GTK_WINDOW(fs->window), 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);
@@ -279,6 +279,11 @@
 	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);