X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Ftint.c;h=3eebf88dfe2cb5bf3f670b8949abfcd7dc8479ea;hb=5b867835741534d8d28e8d158b8f7de53e55018a;hp=8705d949961d25f383fab5bf2de4d8ecaea0abb4;hpb=886c0888915a3daeb3eb3342ff63b3e6cbdb4d63;p=chaz%2Ftint2 diff --git a/src/tint.c b/src/tint.c index 8705d94..3eebf88 100644 --- a/src/tint.c +++ b/src/tint.c @@ -103,13 +103,42 @@ void init (int argc, char *argv[]) XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask); setlocale (LC_ALL, ""); + + // load default icon + int i; + char *path; + const gchar * const *data_dirs; + data_dirs = g_get_system_data_dirs (); + for (i = 0; data_dirs[i] != NULL; i++) { + path = g_build_filename(data_dirs[i], "tint2", "default_icon.png", NULL); + if (g_file_test (path, G_FILE_TEST_EXISTS)) + default_icon = imlib_load_image(path); + g_free(path); + } + + // get monitor and desktop config + get_monitors(); + get_desktops(); } void cleanup() { + cleanup_systray(); cleanup_panel(); + if (default_icon) { + imlib_context_set_image(default_icon); + imlib_free_image(); + } + if (g_tooltip.window) { + XDestroyWindow(server.dsp, g_tooltip.window); + g_tooltip.window = 0; + } + if (g_tooltip.font_desc) { + pango_font_description_free(g_tooltip.font_desc); + g_tooltip.font_desc = 0; + } if (time1_font_desc) pango_font_description_free(time1_font_desc); if (time2_font_desc) pango_font_description_free(time2_font_desc); if (time1_format) g_free(time1_format); @@ -270,7 +299,6 @@ void event_button_press (XEvent *e) if (wm_menu && !task_drag && !click_clock(panel, e->xbutton.x, e->xbutton.y) && (e->xbutton.button != 1) ) { // forward the click to the desktop window (thanks conky) - wm_menu_open = 1; XUngrabPointer(server.dsp, e->xbutton.time); e->xbutton.window = server.root_win; // icewm doesn't open under the mouse. @@ -292,14 +320,6 @@ void event_button_release (XEvent *e) Panel *panel = get_panel(e->xany.window); if (!panel) return; - if (wm_menu && wm_menu_open) { - // forward the click to the desktop window (thanks conky) - wm_menu_open = 0; - e->xbutton.window = server.root_win; - XSendEvent(server.dsp, e->xbutton.window, False, ButtonReleaseMask, e); - return; - } - int action = TOGGLE_ICONIFY; switch (e->xbutton.button) { case 2: @@ -526,6 +546,9 @@ void event_property_notify (XEvent *e) panel_refresh = 1; } } +// We do not check for the iconified state, since it only unsets our active window +// but in openbox a shaded window is considered iconified. So we would loose the active window +// property on unshading it again (commented 01.10.2009) // else if (at == server.atom.WM_STATE) { // // Iconic state // // TODO : try to delete following code @@ -617,26 +640,8 @@ void event_configure_notify (Window win) { // change in root window (xrandr) if (win == server.root_win) { - int i, old_monitor = server.nb_monitor; - get_monitors(); - if (old_monitor != server.nb_monitor) { - } - for (i=0 ; i < nb_panel ; i++) { - Panel *panel = &panel1[i]; - - init_panel_size_and_position(panel); - XMoveResizeWindow(server.dsp, panel->main_win, panel->posx, panel->posy, panel->area.width, panel->area.height); - set_panel_background(panel); - - // force the resize of childs - GSList *l0; - panel->area.resize = 1; - for (l0 = panel->area.list; l0 ; l0 = l0->next) - ((Area*)l0->data)->resize = 1; - } - panel_refresh = 1; - //printf("ConfigureNotify on root width=%d, height=%d\n", server.monitor[0].width, server.monitor[0].height); + init_panel(); return; } @@ -750,7 +755,7 @@ int main (int argc, char *argv[]) GSList *it; init (argc, argv); -load_config: + i = 0; init_config(); if (config_path) @@ -858,9 +863,13 @@ load_config: event_timer(); switch (signal_pending) { - case SIGUSR1: + case SIGUSR1: // reload config file signal_pending = 0; - goto load_config; + init_config(); + config_read_file (config_path); + init_panel(); + cleanup_config(); + break; case SIGINT: case SIGTERM: case SIGHUP: