]> Dogcows Code - chaz/tint2/commitdiff
killall -SIGUSR1 tint2 will reload config file. need more fixed.
authorThierry Lorthiois <lorthiois@bbsoft.fr>
Thu, 22 Oct 2009 20:31:53 +0000 (20:31 +0000)
committerThierry Lorthiois <lorthiois@bbsoft.fr>
Thu, 22 Oct 2009 20:31:53 +0000 (20:31 +0000)
src/clock/clock.c
src/panel.c
src/panel.h
src/tint.c

index cff5e619bcffe110478b856c533acceaab140abc..2745a80bd920afe183c8bbcd036d92378fc37dfe 100644 (file)
@@ -70,7 +70,7 @@ void init_clock_panel(void *p)
 {
        Panel *panel =(Panel*)p;
        Clock *clock = &panel->clock;
-       int i, time_height, time_height_ink, date_height, date_height_ink;
+       int time_height, time_height_ink, date_height, date_height_ink;
 
        clock->area.parent = p;
        clock->area.panel = p;
index e6d747f05fa277e66609b0720af94c4c04e5c78a..06dc5ac5cd98960984fbb0b55937f61e30f4001f 100644 (file)
@@ -80,30 +80,32 @@ void init_panel()
                }
        }
 
-       // alloc panels (one monitor or all monitors)
+       // number of panels
        old_nb_panel = nb_panel;
        if (panel_config.monitor >= 0)
                nb_panel = 1;
        else
                nb_panel = server.nb_monitor;
 
-       if (nb_panel < old_nb_panel) {
-               // freed old panels
-               for (i=nb_panel ; i < old_nb_panel ; i++) {
-                       if (panel1[i].main_win)
-                               XDestroyWindow(server.dsp, panel1[i].main_win);
+       // freed old panels
+       for (i=nb_panel ; i < old_nb_panel ; i++) {
+               if (panel1[i].main_win) {
+                       XDestroyWindow(server.dsp, panel1[i].main_win);
+                       panel1[i].main_win = 0;
                }
-               new_panel = realloc(panel1, nb_panel * sizeof(Panel));
        }
-       else if (nb_panel > old_nb_panel) {
+
+       // alloc & init new panel
+       Window old_win;
+       if (nb_panel != old_nb_panel)
                new_panel = realloc(panel1, nb_panel * sizeof(Panel));
-               // init new panel
-               for (i=old_nb_panel ; i < nb_panel ; i++) {
-                       memcpy(&new_panel[i], &panel_config, sizeof(Panel));
-               }
-       }
        else
                new_panel = panel1;
+       for (i=0 ; i < nb_panel ; i++) {
+               old_win = new_panel[i].main_win;
+               memcpy(&new_panel[i], &panel_config, sizeof(Panel));
+               new_panel[i].main_win = old_win;
+       }
 
        fprintf(stderr, "tint2 : nb monitor %d, nb desktop %d\n", nb_panel, server.nb_desktop);
        for (i=0 ; i < nb_panel ; i++) {
@@ -145,7 +147,7 @@ void init_panel()
 
                if (i >= old_nb_panel) {
                        // new panel
-                       printf("new panel %d : %d, %d, %d, %d\n", i, p->posx, p->posy, p->area.width, p->area.height);
+                       //printf("new panel %d : %d, %d, %d, %d\n", i, p->posx, p->posy, p->area.width, p->area.height);
 
                        // Catch some events
                        long event_mask = ExposureMask|ButtonPressMask|ButtonReleaseMask;
@@ -161,7 +163,7 @@ void init_panel()
                }
                else {
                        // old panel
-                       printf("old panel %d : %d, %d, %d, %d\n", i, p->posx, p->posy, p->area.width, p->area.height);
+                       //printf("old panel %d : %d, %d, %d, %d\n", i, p->posx, p->posy, p->area.width, p->area.height);
                        XMoveResizeWindow(server.dsp, p->main_win, p->posx, p->posy, p->area.width, p->area.height);
                        set_panel_background(p);
                }
index a74b080cea360f7a63eaa7cfe2f76cfcfd8e4f51..22072ff1a76374743d38ffe617f3d93a6ff72f3b 100644 (file)
@@ -106,7 +106,7 @@ extern Panel *panel1;
 extern int  nb_panel;
 
 // realloc panels according to number of monitor
-// it's used on initial config and when new monitor added
+// use panel_config as default value
 void init_panel();
 
 void init_panel_size_and_position(Panel *panel);
index 88f33434888152b699a26b8b008047d33477c84a..ec30b5d25566c20d6c6e52c1f7ad895161560969 100644 (file)
@@ -861,7 +861,7 @@ int main (int argc, char *argv[])
                switch (signal_pending) {
                        case SIGUSR1:
                                signal_pending = 0;
-                               printf("SIGUSR1\n");
+                               init_config();
                                config_read_file (config_path);
                                init_panel();
                                break;
This page took 0.028577 seconds and 4 git commands to generate.