From: Daniel van Vugt Date: Thu, 18 Aug 2011 20:43:29 +0000 (+0200) Subject: Make fullscreen mode actually use the full screen. X-Git-Tag: v1.2~140 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=04b70c636ab45a99518a2f8b238984d0aaef1606 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 --- diff --git a/src/fullscreen.c b/src/fullscreen.c index 8a66da75..8d10e458 100644 --- a/src/fullscreen.c +++ b/src/fullscreen.c @@ -215,6 +215,7 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd, gint x, y; gint w, h; GdkGeometry geometry; + GdkWindow *gdkwin; if (!window || !imd) return NULL; @@ -244,15 +245,14 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd, */ 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 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd, 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);