@@ -161,6 +161,8 @@ struct _EomWindowPrivate {
161161 gint slideshow_switch_timeout ;
162162 GSource * slideshow_switch_source ;
163163
164+ guint fullscreen_idle_inhibit_cookie ;
165+
164166 guint recent_menu_id ;
165167
166168 EomJob * load_job ;
@@ -1972,6 +1974,37 @@ update_ui_visibility (EomWindow *window)
19721974 }
19731975}
19741976
1977+ static void
1978+ eom_window_inhibit_screensaver (EomWindow * window )
1979+ {
1980+ EomWindowPrivate * priv = window -> priv ;
1981+
1982+ g_return_if_fail (priv -> fullscreen_idle_inhibit_cookie == 0 );
1983+
1984+ eom_debug (DEBUG_WINDOW );
1985+
1986+ window -> priv -> fullscreen_idle_inhibit_cookie =
1987+ gtk_application_inhibit (GTK_APPLICATION (EOM_APP ),
1988+ GTK_WINDOW (window ),
1989+ GTK_APPLICATION_INHIBIT_IDLE ,
1990+ _ ("Viewing a slideshow" ));
1991+ }
1992+
1993+ static void
1994+ eom_window_uninhibit_screensaver (EomWindow * window )
1995+ {
1996+ EomWindowPrivate * priv = window -> priv ;
1997+
1998+ if (G_UNLIKELY (priv -> fullscreen_idle_inhibit_cookie == 0 ))
1999+ return ;
2000+
2001+ eom_debug (DEBUG_WINDOW );
2002+
2003+ gtk_application_uninhibit (GTK_APPLICATION (EOM_APP ),
2004+ priv -> fullscreen_idle_inhibit_cookie );
2005+ priv -> fullscreen_idle_inhibit_cookie = 0 ;
2006+ }
2007+
19752008static void
19762009eom_window_run_fullscreen (EomWindow * window , gboolean slideshow )
19772010{
@@ -2057,7 +2090,7 @@ eom_window_run_fullscreen (EomWindow *window, gboolean slideshow)
20572090 gtk_window_fullscreen (GTK_WINDOW (window ));
20582091 eom_window_update_fullscreen_popup (window );
20592092
2060- eom_application_screensaver_disable ( EOM_APP );
2093+ eom_window_inhibit_screensaver ( window );
20612094
20622095 /* Update both actions as we could've already been in one those modes */
20632096 eom_window_update_slideshow_action (window );
@@ -2122,7 +2155,7 @@ eom_window_stop_fullscreen (EomWindow *window, gboolean slideshow)
21222155
21232156 eom_scroll_view_show_cursor (EOM_SCROLL_VIEW (priv -> view ));
21242157
2125- eom_application_screensaver_enable ( EOM_APP );
2158+ eom_window_uninhibit_screensaver ( window );
21262159}
21272160
21282161static void
@@ -4542,6 +4575,7 @@ eom_window_init (EomWindow *window)
45424575 window -> priv -> slideshow_loop = FALSE;
45434576 window -> priv -> slideshow_switch_timeout = 0 ;
45444577 window -> priv -> slideshow_switch_source = NULL ;
4578+ window -> priv -> fullscreen_idle_inhibit_cookie = 0 ;
45454579
45464580 gtk_window_set_geometry_hints (GTK_WINDOW (window ),
45474581 GTK_WIDGET (window ),
@@ -4666,6 +4700,7 @@ eom_window_dispose (GObject *object)
46664700 }
46674701
46684702 slideshow_clear_timeout (window );
4703+ eom_window_uninhibit_screensaver (window );
46694704
46704705 g_signal_handlers_disconnect_by_func (gtk_recent_manager_get_default (),
46714706 G_CALLBACK (eom_window_recent_manager_changed_cb ),
0 commit comments