comparison src/fullscreen.c @ 2896:87640dd90e16

Fix fullscreen spanning multiple monitors Commit a16635c ("Fix fullscreen - remove all the garbage which breaks things and let Gtk do its job.") broke fullscreen spanning multiple monitors. Fix this for GTK3 by using gdk_window_set_fullscreen_mode(). Fixes #650. Unfortunately, GTK2 has no equivalent.
author Jiri Bohac <jbohac@suse.cz>
date Fri, 07 Dec 2018 00:30:22 +0100
parents 425b69f7ff5f
children 2dfbd0b6e8cc
comparison
equal deleted inserted replaced
2860:b20a96b979a3 2896:87640dd90e16
246 246
247 /* few cosmetic details */ 247 /* few cosmetic details */
248 gtk_window_set_decorated(GTK_WINDOW(fs->window), FALSE); 248 gtk_window_set_decorated(GTK_WINDOW(fs->window), FALSE);
249 gtk_container_set_border_width(GTK_CONTAINER(fs->window), 0); 249 gtk_container_set_border_width(GTK_CONTAINER(fs->window), 0);
250 250
251 /* make window fullscreen -- let Gtk do it's job, don't screw it in any way */
252 gtk_window_fullscreen(GTK_WINDOW(fs->window));
253
254 /* move it to requested screen */
255 if (options->fullscreen.screen >= 0) {
256 gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
257 }
258 251
259 /* keep window above others, if requested */ 252 /* keep window above others, if requested */
260 if (options->fullscreen.above) { 253 if (options->fullscreen.above) {
261 gtk_window_set_keep_above(GTK_WINDOW(fs->window), TRUE); 254 gtk_window_set_keep_above(GTK_WINDOW(fs->window), TRUE);
262 } 255 }
279 geometry.win_gravity = GDK_GRAVITY_STATIC; 272 geometry.win_gravity = GDK_GRAVITY_STATIC;
280 gtk_window_set_geometry_hints(GTK_WINDOW(fs->window), fs->window, &geometry, 273 gtk_window_set_geometry_hints(GTK_WINDOW(fs->window), fs->window, &geometry,
281 GDK_HINT_WIN_GRAVITY | GDK_HINT_USER_POS | GDK_HINT_USER_SIZE); 274 GDK_HINT_WIN_GRAVITY | GDK_HINT_USER_POS | GDK_HINT_USER_SIZE);
282 275
283 gtk_widget_realize(fs->window); 276 gtk_widget_realize(fs->window);
277 #if GTK_CHECK_VERSION(3,8,0)
278 if ((options->fullscreen.screen % 100) == 0) {
279 GdkWindow *gdkwin;
280 gdkwin = gtk_widget_get_window(fs->window);
281 if (gdkwin != NULL)
282 gdk_window_set_fullscreen_mode(gdkwin, GDK_FULLSCREEN_ON_ALL_MONITORS);
283 }
284 #endif
285 /* make window fullscreen -- let Gtk do it's job, don't screw it in any way */
286 gtk_window_fullscreen(GTK_WINDOW(fs->window));
287
288 /* move it to requested screen */
289 if (options->fullscreen.screen >= 0) {
290 gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
291
292 }
284 293
285 fs->imd = image_new(FALSE); 294 fs->imd = image_new(FALSE);
286 295
287 gtk_container_add(GTK_CONTAINER(fs->window), fs->imd->widget); 296 gtk_container_add(GTK_CONTAINER(fs->window), fs->imd->widget);
288 297