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);
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.
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:
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
{
// 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;
}
GSList *it;
init (argc, argv);
-load_config:
+
i = 0;
init_config();
if (config_path)
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: