From: Thierry Lorthiois Date: Fri, 30 Oct 2009 20:54:29 +0000 (+0000) Subject: many fixed for SIGUSR1 signal X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=7ef35059d22141cf422ce639fdd6c0f23ecc868a;p=chaz%2Ftint2 many fixed for SIGUSR1 signal --- diff --git a/src/config.c b/src/config.c index 0e7eae4..efbcd5c 100644 --- a/src/config.c +++ b/src/config.c @@ -56,10 +56,8 @@ char *thumbnail_path = 0; // -------------------------------------------------- // backward compatibility static int old_task_icon_size; -static char *old_task_font; -static char *old_time1_font; -static char *old_time2_font; -static Area *area_task, *area_task_active; +static Area *area_task; +static Area *area_task_active; // temporary list of background @@ -79,6 +77,9 @@ void init_config() cleanup_tooltip(); // panel's default value + if (panel_config.g_task.font_desc) { + pango_font_description_free(panel_config.g_task.font_desc); + } memset(&panel_config, 0, sizeof(Panel)); panel_config.g_task.alpha = 100; panel_config.g_task.alpha_active = 100; @@ -645,7 +646,6 @@ int config_read () g_free(path1); // copy tint2rc from system directory to user directory - g_free(path1); char *path2 = 0; system_dirs = g_get_system_config_dirs(); for (i = 0; system_dirs[i]; i++) { @@ -682,9 +682,6 @@ int config_read_file (const char *path) char *key, *value; if ((fp = fopen(path, "r")) == NULL) return 0; - old_task_font = 0; - old_time1_font = 0; - old_time2_font = 0; while (fgets(line, sizeof(line), fp) != NULL) { if (parse_line(line, &key, &value)) { @@ -698,18 +695,6 @@ int config_read_file (const char *path) if (old_task_icon_size) { panel_config.g_task.area.paddingy = ((int)panel_config.area.height - (2 * panel_config.area.paddingy) - old_task_icon_size) / 2; } - if (old_task_font) { - g_free(old_task_font); - old_task_font = 0; - } - if (old_time1_font) { - g_free(old_time1_font); - old_time1_font = 0; - } - if (old_time2_font) { - g_free(old_time2_font); - old_time2_font = 0; - } return 1; } diff --git a/src/panel.c b/src/panel.c index 0a09968..3151be2 100644 --- a/src/panel.c +++ b/src/panel.c @@ -153,7 +153,6 @@ void init_panel() if (g_tooltip.enabled) event_mask |= PointerMotionMask|LeaveWindowMask; XSetWindowAttributes att = { ParentRelative, 0L, 0, 0L, 0, 0, Always, 0L, 0L, False, event_mask, NoEventMask, False, 0, 0 }; - if (p->main_win) XDestroyWindow(server.dsp, p->main_win); p->main_win = XCreateWindow(server.dsp, server.root_win, p->posx, p->posy, p->area.width, p->area.height, 0, server.depth, InputOutput, CopyFromParent, CWEventMask, &att); } else { @@ -243,12 +242,6 @@ void cleanup_panel() task_urgent = 0; cleanup_taskbar(); - // font allocated once - if (panel1[0].g_task.font_desc) { - pango_font_description_free(panel1[0].g_task.font_desc); - panel1[0].g_task.font_desc = 0; - } - int i; Panel *p; for (i=0 ; i < nb_panel ; i++) { diff --git a/src/systray/systraybar.c b/src/systray/systraybar.c index 661b2c6..8543196 100644 --- a/src/systray/systraybar.c +++ b/src/systray/systraybar.c @@ -379,7 +379,6 @@ void remove_icon(TrayWindow *traywin) // remove from our list systray.list_icons = g_slist_remove(systray.list_icons, traywin); - g_free(traywin); systray.area.resize = 1; systray.area.redraw = 1; //printf("remove_icon id %lx, %d\n", traywin->id); @@ -394,6 +393,7 @@ void remove_icon(TrayWindow *traywin) XReparentWindow(server.dsp, traywin->id, server.root_win, 0, 0); XSync(server.dsp, False); XSetErrorHandler(old); + g_free(traywin); // changed in systray force resize on panel Panel *panel = systray.area.panel; diff --git a/src/taskbar/taskbar.c b/src/taskbar/taskbar.c index eae04df..1c02988 100644 --- a/src/taskbar/taskbar.c +++ b/src/taskbar/taskbar.c @@ -121,8 +121,6 @@ void cleanup_taskbar() GSList *l0; Task *tsk; - if (panel_config.g_task.font_desc) - pango_font_description_free(panel_config.g_task.font_desc); for (i=0 ; i < nb_panel ; i++) { panel = &panel1[i]; diff --git a/src/tint.c b/src/tint.c index 903a4cf..f8a4a52 100644 --- a/src/tint.c +++ b/src/tint.c @@ -587,7 +587,10 @@ void event_configure_notify (Window win) // change in root window (xrandr) if (win == server.root_win) { get_monitors(); + init_config(); + config_read_file (config_path); init_panel(); + cleanup_config(); return; } @@ -750,6 +753,7 @@ int main (int argc, char *argv[]) break; case MotionNotify: { + if (!g_tooltip.enabled) break; Panel* panel = get_panel(e.xmotion.window); Task* task = click_task(panel, e.xmotion.x, e.xmotion.y); if (task) diff --git a/src/tooltip/tooltip.c b/src/tooltip/tooltip.c index 157b65c..ca6a5a2 100644 --- a/src/tooltip/tooltip.c +++ b/src/tooltip/tooltip.c @@ -63,6 +63,7 @@ void cleanup_tooltip() { tooltip_hide(); g_tooltip.enabled = False; + g_tooltip.current_state = TOOLTIP_ABOUT_TO_HIDE; if (g_tooltip.task) { alarm(0); g_tooltip.task = 0;