[SF#753] Fix incorrect panel geometry initialization.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 15 Jun 2015 15:27:10 +0000 (18:27 +0300)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 15 Jun 2015 16:34:51 +0000 (19:34 +0300)
The [panel].inialized is used to follow GUI initialization, it cannot be used
to check if configure was called first time, panel reconfigure just have to
skip resetting the value if orientation wasn't changed - that can be applied
for both cases where it changed:
- the panel is new one with vertical orientation;
- the panel orientation was changed in the configuration dialog;
and in all cases where it doesn't:
- the panel is new one with horisontal orientation (use default values);
- the panel orientation was not changed;
- the panel geometry was initialized from config.

ChangeLog
src/panel.c

index bef51b8..26ba3b6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
 * Fixed crash in taskbar plugin after number of desktops was updated.
+* Fixed incorrect panel geometry initialization.
 
 0.8.1
 -------------------------------------------------------------------------
index 940a919..4b03fcf 100644 (file)
@@ -1629,6 +1629,12 @@ void panel_set_panel_configuration_changed(Panel *p)
     _panel_set_panel_configuration_changed(p->topgwin);
 }
 
+static inline void _update_orientation(Panel *p)
+{
+    p->orientation = (p->edge == EDGE_TOP || p->edge == EDGE_BOTTOM)
+                        ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
+}
+
 static gboolean _panel_idle_reconfigure(gpointer widget)
 {
     LXPanel *panel;
@@ -1642,15 +1648,13 @@ static gboolean _panel_idle_reconfigure(gpointer widget)
     panel = LXPANEL(widget);
     p = panel->priv;
     previous_orientation = p->orientation;
-    p->orientation = (p->edge == EDGE_TOP || p->edge == EDGE_BOTTOM)
-        ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
+    _update_orientation(p);
 
     /* either first run or orientation was changed */
-    if (!p->initialized || previous_orientation != p->orientation)
+    if (previous_orientation != p->orientation)
     {
         panel_adjust_geometry_terminology(p);
-        if (p->initialized)
-            p->height = ((p->orientation == GTK_ORIENTATION_HORIZONTAL) ? PANEL_HEIGHT_DEFAULT : PANEL_WIDTH_DEFAULT);
+        p->height = ((p->orientation == GTK_ORIENTATION_HORIZONTAL) ? PANEL_HEIGHT_DEFAULT : PANEL_WIDTH_DEFAULT);
         if (p->height_control != NULL)
             gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->height_control), p->height);
         if ((p->widthtype == WIDTH_PIXEL) && (p->width_control != NULL))
@@ -1775,6 +1779,7 @@ panel_parse_global(Panel *p, config_setting_t *cfg)
         p->background_file = g_strdup(str);
     config_setting_lookup_int(cfg, "iconsize", &p->icon_size);
 
+    _update_orientation(p);
     panel_normalize_configuration(p);
 
     return 1;