From 01e90494fc953a58283ab49aca5562f9f456a6b8 Mon Sep 17 00:00:00 2001 From: Thierry Lorthiois Date: Thu, 22 Oct 2009 20:31:53 +0000 Subject: [PATCH] killall -SIGUSR1 tint2 will reload config file. need more fixed. --- src/clock/clock.c | 2 +- src/panel.c | 32 +++++++++++++++++--------------- src/panel.h | 2 +- src/tint.c | 2 +- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/clock/clock.c b/src/clock/clock.c index cff5e61..2745a80 100644 --- a/src/clock/clock.c +++ b/src/clock/clock.c @@ -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; diff --git a/src/panel.c b/src/panel.c index e6d747f..06dc5ac 100644 --- a/src/panel.c +++ b/src/panel.c @@ -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); } diff --git a/src/panel.h b/src/panel.h index a74b080..22072ff 100644 --- a/src/panel.h +++ b/src/panel.h @@ -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); diff --git a/src/tint.c b/src/tint.c index 88f3343..ec30b5d 100644 --- a/src/tint.c +++ b/src/tint.c @@ -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; -- 2.45.2