Fix #1303: Automatically hide image overlay in fullscreen mode
authorColin Clark <colin.clark@cclark.uk>
Thu, 28 Mar 2024 14:57:19 +0000 (14:57 +0000)
committerColin Clark <colin.clark@cclark.uk>
Thu, 28 Mar 2024 14:57:19 +0000 (14:57 +0000)
https://github.com/BestImageViewer/geeqie/issues/1303

Additional option Edit/Preferences/Behavior/Hide OSD In Fullscreen

doc/docbook/GuideOptionsBehavior.xml
src/fullscreen.cc
src/fullscreen.h
src/options.cc
src/options.h
src/preferences.cc
src/rcfile.cc

index 82d8f08..6e76447 100644 (file)
           <para>Open collection windows with "Always on Top" set.</para>
         </listitem>
       </varlistentry>
+      <varlistentry>
+        <term>
+          <guilabel>Hide window in fullscreen</guilabel>
+        </term>
+        <listitem>
+          <para>When alt-tabbing, prevent Geeqie window showing twice.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>
+          <guilabel>Hide OSD in fullscreen</guilabel>
+        </term>
+        <listitem>
+          <para>Hide Overlay Screen Display in fullscreen mode.</para>
+        </listitem>
+      </varlistentry>
       <varlistentry>
         <term>
           <guilabel>Recent folder list maximum size</guilabel>
index dd9b336..3593fdc 100644 (file)
@@ -458,6 +458,12 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd,
 
        fs->cursor_state = FULLSCREEN_CURSOR_HIDDEN;
 
+       fs->osd_flags = image_osd_get(imd);
+       if (options->hide_osd_in_fullscreen)
+               {
+               image_osd_set(imd, OSD_SHOW_NOTHING);
+               }
+
        fs->normal_window = window;
        fs->normal_imd = imd;
 
@@ -582,6 +588,11 @@ void fullscreen_stop(FullScreenData *fs)
 {
        if (!fs) return;
 
+       if (options->hide_osd_in_fullscreen)
+               {
+               image_osd_set(fs->normal_imd, fs->osd_flags);
+               }
+
        if (fs->saver_block_id) g_source_remove(fs->saver_block_id);
 
        fullscreen_hide_mouse_disable(fs);
index 32b0b91..764fe8c 100644 (file)
@@ -25,6 +25,8 @@
 #include <glib.h>
 #include <gtk/gtk.h>
 
+#include "image-overlay.h"
+
 struct ImageWindow;
 
 struct FullScreenData
@@ -39,6 +41,7 @@ struct FullScreenData
        guint busy_mouse_id; /**< event source id */
 
        gint cursor_state;
+OsdShowFlags osd_flags;
 
        guint saver_block_id; /**< event source id */
 
index 6171ed7..23ab144 100644 (file)
@@ -95,6 +95,7 @@ ConfOptions *init_options(ConfOptions *options)
        options->collections_duplicates = FALSE;
        options->collections_on_top = FALSE;
        options->hide_window_in_fullscreen = TRUE;
+       options->hide_osd_in_fullscreen = FALSE;
 
        memset(&options->image.border_color, 0, sizeof(options->image.border_color));
        memset(&options->image.alpha_color_1, 0, sizeof(options->image.alpha_color_1));
index 894f25e..a759ce8 100644 (file)
@@ -105,6 +105,7 @@ struct ConfOptions
        gboolean collections_duplicates;
        gboolean collections_on_top;
        gboolean hide_window_in_fullscreen;
+       gboolean hide_osd_in_fullscreen;
 
        gchar *help_search_engine;
 
index b60c6d0..381b696 100644 (file)
@@ -496,6 +496,7 @@ static void config_window_apply()
        options->collections_duplicates = c_options->collections_duplicates;
        options->collections_on_top = c_options->collections_on_top;
        options->hide_window_in_fullscreen = c_options->hide_window_in_fullscreen;
+       options->hide_osd_in_fullscreen = c_options->hide_osd_in_fullscreen;
        config_entry_to_option(help_search_engine_entry, &options->help_search_engine, nullptr);
 
        options->external_preview.enable = c_options->external_preview.enable;
@@ -3555,6 +3556,7 @@ static void config_tab_behavior(GtkWidget *notebook)
        GtkWidget *with_rename;
        GtkWidget *collections_on_top;
        GtkWidget *hide_window_in_fullscreen;
+       GtkWidget *hide_osd_in_fullscreen;
        GtkWidget *checkbox;
        GtkWidget *tmp;
 
@@ -3648,6 +3650,10 @@ static void config_tab_behavior(GtkWidget *notebook)
                                options->hide_window_in_fullscreen, &c_options->hide_window_in_fullscreen);
        gtk_widget_set_tooltip_text(hide_window_in_fullscreen,"When alt-tabbing, prevent Geeqie window showing twice");
 
+       hide_osd_in_fullscreen = pref_checkbox_new_int(group, _("Hide OSD in fullscreen"),
+                               options->hide_osd_in_fullscreen, &c_options->hide_osd_in_fullscreen);
+       gtk_widget_set_tooltip_text(hide_osd_in_fullscreen,"Hide Overlay Screen Display in fullscreen mode");
+
        pref_spin_new_int(group, _("Recent folder list maximum size"), nullptr,
                          1, 50, 1, options->open_recent_list_maxsize, &c_options->open_recent_list_maxsize);
 
index 73e3d58..6527fac 100644 (file)
@@ -400,6 +400,7 @@ static void write_global_attributes(GString *outstr, gint indent)
        WRITE_NL(); WRITE_BOOL(*options, collections_duplicates);
        WRITE_NL(); WRITE_BOOL(*options, collections_on_top);
        WRITE_NL(); WRITE_BOOL(*options, hide_window_in_fullscreen);
+       WRITE_NL(); WRITE_BOOL(*options, hide_osd_in_fullscreen);
 
        WRITE_NL(); WRITE_BOOL(*options, selectable_bars.menu_bar);
        WRITE_NL(); WRITE_BOOL(*options, selectable_bars.status_bar);
@@ -905,6 +906,7 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar **
                if (READ_BOOL(*options, collections_duplicates)) continue;
                if (READ_BOOL(*options, collections_on_top)) continue;
                if (READ_BOOL(*options, hide_window_in_fullscreen)) continue;
+               if (READ_BOOL(*options, hide_osd_in_fullscreen)) continue;
 
                if (READ_BOOL(*options, selectable_bars.menu_bar)) continue;
                if (READ_BOOL(*options, selectable_bars.status_bar)) continue;