]> Dogcows Code - chaz/tint2/blobdiff - src/config.c
fixed issue 45, segfault without clock
[chaz/tint2] / src / config.c
index 6f7d42a64bb538506cfaba1ca9c465bbacf96322..5ef34640d776c19d3b4e271224d43056a380ec35 100644 (file)
@@ -38,6 +38,7 @@
 #include "server.h"
 #include "task.h"
 #include "taskbar.h"
+#include "systraybar.h"
 #include "clock.h"
 #include "panel.h"
 #include "config.h"
@@ -409,6 +410,14 @@ void add_entry (char *key, char *value)
       memcpy(&panel_config->g_task.area.pix_active.border, &a->pix.border, sizeof(Border));
    }
 
+   /* Trayer */
+   else if (strcmp (key, "trayer_background_id") == 0) {
+      int id = atoi (value);
+      Area *a = g_slist_nth_data(list_back, id);
+      memcpy(&panel_config->trayer.area.pix.back, &a->pix.back, sizeof(Color));
+      memcpy(&panel_config->trayer.area.pix.border, &a->pix.border, sizeof(Border));
+   }
+
    /* Mouse actions */
    else if (strcmp (key, "mouse_middle") == 0)
       get_action (value, &mouse_middle);
@@ -539,20 +548,18 @@ void config_finish ()
       fprintf(stderr, "tint2 exit : monitor %d not found.\n", panel_config->monitor+1);
       exit(0);
    }
-   else {
-      if (!server.monitor[panel_config->monitor].width || !server.monitor[panel_config->monitor].height)
-         fprintf(stderr, "tint2 error : invalid monitor size.\n");
-   }
 
        // alloc panels
    int i;
    if (panel_config->monitor >= 0) {
+       // just one monitor
           nb_panel = 1;
           panel1 = calloc(nb_panel, sizeof(Panel));
           memcpy(panel1, panel_config, sizeof(Panel));
+          panel1->monitor = panel_config->monitor;
        }
        else {
-       // multi monitor
+       // all monitors
           nb_panel = server.nb_monitor;
           panel1 = calloc(nb_panel, sizeof(Panel));
 
@@ -563,13 +570,19 @@ void config_finish ()
        }
 
    init_panel();
+   // force the resize
+       for (i=0 ; i < nb_panel ; i++) {
+          panel1[i].area.resize = 1;
+          if (time1_format)
+                  resize_clock(&panel1[i].clock);
+       }
+
    init_taskbar();
    visible_object();
 
-       task_refresh_tasklist();
-       panel_refresh = 1;
-
        cleanup_config();
+
+       task_refresh_tasklist();
 }
 
 
This page took 0.025195 seconds and 4 git commands to generate.