Fix #645: Hide Bars cannot be toggled after Geeqie restart
authorColin Clark <colin.clark@cclark.uk>
Sat, 17 Nov 2018 19:48:35 +0000 (19:48 +0000)
committerColin Clark <colin.clark@cclark.uk>
Sat, 17 Nov 2018 19:48:35 +0000 (19:48 +0000)
https://github.com/BestImageViewer/geeqie/issues/645

src/layout.c
src/layout_util.c

index 5006241..9f4ec0b 100644 (file)
@@ -2532,6 +2532,14 @@ void layout_write_attributes(LayoutOptions *layout, GString *outstr, gint indent
 
        WRITE_NL(); WRITE_BOOL(*layout, toolbar_hidden);
        WRITE_NL(); WRITE_BOOL(*layout, show_info_pixel);
+       WRITE_SEPARATOR();
+
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.info);
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.sort);
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.tools_float);
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.tools_hidden);
+       WRITE_NL(); WRITE_BOOL(*layout, bars_state.hidden);
+       WRITE_SEPARATOR();
 
        WRITE_NL(); WRITE_UINT(*layout, image_overlay.state);
        WRITE_NL(); WRITE_INT(*layout, image_overlay.histogram_channel);
@@ -2618,6 +2626,12 @@ void layout_load_attributes(LayoutOptions *layout, const gchar **attribute_names
                if (READ_BOOL(*layout, toolbar_hidden)) continue;
                if (READ_BOOL(*layout, show_info_pixel)) continue;
 
+               if (READ_BOOL(*layout, bars_state.info)) continue;
+               if (READ_BOOL(*layout, bars_state.sort)) continue;
+               if (READ_BOOL(*layout, bars_state.tools_float)) continue;
+               if (READ_BOOL(*layout, bars_state.tools_hidden)) continue;
+               if (READ_BOOL(*layout, bars_state.hidden)) continue;
+
                if (READ_UINT(*layout, image_overlay.state)) continue;
                if (READ_INT(*layout, image_overlay.histogram_channel)) continue;
                if (READ_INT(*layout, image_overlay.histogram_mode)) continue;
index 86449b6..f5e03af 100644 (file)
@@ -1114,6 +1114,10 @@ static void layout_menu_hide_bars_cb(GtkToggleAction *action, gpointer data)
 {
        LayoutWindow *lw = data;
 
+       if (lw->options.bars_state.hidden == gtk_toggle_action_get_active(action))
+               {
+               return;
+               }
        layout_bars_hide_toggle(lw);
 }
 
@@ -3155,6 +3159,9 @@ static void layout_util_sync_views(LayoutWindow *lw)
        action = gtk_action_group_get_action(lw->action_group, "ShowFileFilter");
        gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_file_filter);
 
+       action = gtk_action_group_get_action(lw->action_group, "HideBars");
+       gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), (lw->options.bars_state.hidden));
+
        if (osd_flags & OSD_SHOW_HISTOGRAM)
                {
                action = gtk_action_group_get_action(lw->action_group, "HistogramChanR");
@@ -3407,7 +3414,14 @@ static void layout_bars_hide_toggle(LayoutWindow *lw)
                lw->options.bars_state.hidden = FALSE;
                if (lw->options.bars_state.sort)
                        {
-                       gtk_widget_show(lw->bar_sort);
+                       if (lw->bar_sort)
+                               {
+                               gtk_widget_show(lw->bar_sort);
+                               }
+                       else
+                               {
+                               layout_bar_sort_set_default(lw);
+                               }
                        }
                if (lw->options.bars_state.info)
                        {
@@ -3424,7 +3438,11 @@ static void layout_bars_hide_toggle(LayoutWindow *lw)
                lw->options.bars_state.tools_float = lw->options.tools_float;
                lw->options.bars_state.tools_hidden = lw->options.tools_hidden;
 
-               gtk_widget_hide(lw->bar);
+               if (lw->bar)
+                       {
+                       gtk_widget_hide(lw->bar);
+                       }
+
                if (lw->bar_sort)
                        gtk_widget_hide(lw->bar_sort);
                layout_tools_float_set(lw, lw->options.tools_float, TRUE);