Mercurial > hg > forks > geeqie
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 |