Fix widthtype config option handling, and new API panel_is_dynamic().
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Thu, 14 Aug 2014 22:10:46 +0000 (01:10 +0300)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Sat, 16 Aug 2014 16:23:40 +0000 (19:23 +0300)
src/configurator.c
src/panel.c
src/panel.h

index 72407a7..18c5ccf 100644 (file)
@@ -258,19 +258,23 @@ static void set_width_type( GtkWidget *item, LXPanel* panel )
     Panel *p = panel->priv;
     int widthtype;
     gboolean t;
+
     widthtype = gtk_combo_box_get_active(GTK_COMBO_BOX(item)) + 1;
+    if (p->widthtype == widthtype) /* not changed */
+        return;
+
     p->widthtype = widthtype;
 
     spin = (GtkWidget*)g_object_get_data(G_OBJECT(item), "width_spin" );
     t = (widthtype != WIDTH_REQUEST);
     gtk_widget_set_sensitive( spin, t );
-    if (widthtype == WIDTH_PERCENT)
+    switch (widthtype)
     {
+    case WIDTH_PERCENT:
         gtk_spin_button_set_range( GTK_SPIN_BUTTON(spin), 0, 100 );
         gtk_spin_button_set_value( GTK_SPIN_BUTTON(spin), 100 );
-    }
-    else if (widthtype == WIDTH_PIXEL)
-    {
+        break;
+    case WIDTH_PIXEL:
         if ((p->edge == EDGE_TOP) || (p->edge == EDGE_BOTTOM))
         {
             gtk_spin_button_set_range( GTK_SPIN_BUTTON(spin), 0, gdk_screen_width() );
@@ -281,8 +285,11 @@ static void set_width_type( GtkWidget *item, LXPanel* panel )
             gtk_spin_button_set_range( GTK_SPIN_BUTTON(spin), 0, gdk_screen_height() );
             gtk_spin_button_set_value( GTK_SPIN_BUTTON(spin), gdk_screen_height() );
         }
-    } else
-        return;
+        break;
+    case WIDTH_REQUEST:
+        break;
+    default: ;
+    }
 
     update_panel_geometry(panel);
     UPDATE_GLOBAL_STRING(p, "widthtype", num2str(width_pair, widthtype, "none"));
index 18da11c..f56de53 100644 (file)
@@ -1983,6 +1983,11 @@ gboolean panel_is_at_bottom(LXPanel *panel)
     return panel->priv->edge == EDGE_BOTTOM;
 }
 
+gboolean panel_is_dynamic(LXPanel *panel)
+{
+    return panel->priv->widthtype == WIDTH_REQUEST;
+}
+
 GtkWidget *panel_box_new(LXPanel *panel, gboolean homogeneous, gint spacing)
 {
     if (panel->priv->orientation == GTK_ORIENTATION_HORIZONTAL)
index 2c9d082..9347d27 100644 (file)
@@ -128,6 +128,7 @@ extern gint panel_get_monitor(LXPanel *panel);
 extern GtkStyle *panel_get_defstyle(LXPanel *panel);
 extern GtkIconTheme *panel_get_icon_theme(LXPanel *panel);
 extern gboolean panel_is_at_bottom(LXPanel *panel);
+extern gboolean panel_is_dynamic(LXPanel *panel);
 extern GtkWidget *panel_box_new(LXPanel *panel, gboolean homogeneous, gint spacing);
 extern GtkWidget *panel_separator_new(LXPanel *panel);