Bug fix: GPS map expander
authorColin Clark <colin.clark@cclark.uk>
Sat, 5 Aug 2017 16:36:05 +0000 (17:36 +0100)
committerColin Clark <colin.clark@cclark.uk>
Sat, 5 Aug 2017 16:36:05 +0000 (17:36 +0100)
When the expander for the GPS map was closed, the map continued to be
displayed.
The reason is unknown.

This commit uses the expander signal to explicitly show or hide the
child of the expander.

src/bar.c
src/bar_gps.c

index 8088071..d607202 100644 (file)
--- a/src/bar.c
+++ b/src/bar.c
@@ -364,6 +364,24 @@ static gboolean bar_menu_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer
        return FALSE;
 }
 
+static void bar_expander_cb(GObject *object, GParamSpec *param_spec, gpointer data)
+{
+       GtkExpander *expander;
+       GtkWidget *child;
+
+       expander = GTK_EXPANDER(object);
+       child = gtk_bin_get_child(GTK_BIN(expander));
+
+       if (gtk_expander_get_expanded(expander))
+               {
+               gtk_widget_show_all(child);
+               }
+       else
+               {
+               gtk_widget_hide(child);
+               }
+}
+
 static gboolean bar_menu_add_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
 {
        bar_menu_add_popup(widget);
@@ -563,6 +581,7 @@ void bar_add(GtkWidget *bar, GtkWidget *pane)
        gtk_box_pack_start(GTK_BOX(bd->vbox), expander, FALSE, TRUE, 0);
 
        g_signal_connect(expander, "button_release_event", G_CALLBACK(bar_menu_cb), bd);
+       g_signal_connect(expander, "notify::expanded", G_CALLBACK(bar_expander_cb), pd);
 
        gtk_container_add(GTK_CONTAINER(expander), pane);
 
index fa0213d..a713be6 100644 (file)
@@ -519,13 +519,6 @@ static void bar_pane_gps_update(PaneGPSData *pgd)
 {
        GList *list;
 
-       /* The widget does not have a parent during bar_pane_gps_new, so calling gtk_widget_show_all there gives a
-        * "Gtk-CRITICAL **: gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed"
-        * error. gtk_widget_show_all can be given after it has been added to the bar.
-        */
-       if (gtk_widget_get_parent(pgd->widget) != NULL)
-               gtk_widget_show_all(pgd->widget);
-
        /* If a create-marker background process is running, kill it
         * and start again
         */