From: Andreas Fink Date: Sun, 12 Sep 2010 22:00:00 +0000 (+0000) Subject: *fix* issue 282 X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=a72ae04bf96477f11d8bf24baea54596f6d3356b;p=chaz%2Ftint2 *fix* issue 282 *fix* correct x/y coordinates for tooltip on multi-head setup *fix* delete multitimer hashmap *fix* cleanup_panel() needs to be called after cleanup_launcher() --- diff --git a/src/panel.c b/src/panel.c index 49ae218..61b4b20 100644 --- a/src/panel.c +++ b/src/panel.c @@ -510,7 +510,7 @@ void set_panel_properties(Panel *p) XChangeProperty(server.dsp, p->main_win, server.atom._MOTIF_WM_HINTS, server.atom._MOTIF_WM_HINTS, 32, PropModeReplace, (unsigned char *) prop, 5); // XdndAware - Register for Xdnd events - long version=5; + Atom version=4; XChangeProperty(server.dsp, p->main_win, server.atom.XdndAware, XA_ATOM, 32, PropModeReplace, (unsigned char*)&version, 1); update_strut(p); diff --git a/src/systray/systraybar.c b/src/systray/systraybar.c index 5a380c1..9d46054 100644 --- a/src/systray/systraybar.c +++ b/src/systray/systraybar.c @@ -278,7 +278,7 @@ void start_net() // v0.3 trayer specification. tint2 always horizontal. // Vertical panel will draw the systray horizontal. - int orient = 0; + long orient = 0; XChangeProperty(server.dsp, net_sel_win, server.atom._NET_SYSTEM_TRAY_ORIENTATION, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &orient, 1); VisualID vid; if (server.visual32 && (systray.alpha != 100 || systray.brightness != 0 || systray.saturation != 0)) diff --git a/src/taskbar/task.c b/src/taskbar/task.c index af4c369..5f92233 100644 --- a/src/taskbar/task.c +++ b/src/taskbar/task.c @@ -209,7 +209,7 @@ void get_icon (Task *tsk) int i; Imlib_Image img = NULL; XWMHints *hints = 0; - long *data = 0; + gulong *data = 0; int k; for (k=0; kg_task.icon_size1); - #ifdef __x86_64__ DATA32 icon_data[w * h]; int length = w * h; diff --git a/src/tint.c b/src/tint.c index a573ab1..0352aa8 100644 --- a/src/tint.c +++ b/src/tint.c @@ -158,13 +158,13 @@ void cleanup() { cleanup_timeout(); cleanup_systray(); - cleanup_panel(); cleanup_tooltip(); cleanup_clock(); cleanup_launcher(); #ifdef ENABLE_BATTERY cleanup_battery(); #endif + cleanup_panel(); cleanup_config(); if (default_icon) { diff --git a/src/tooltip/tooltip.c b/src/tooltip/tooltip.c index dd7166e..cf62db3 100644 --- a/src/tooltip/tooltip.c +++ b/src/tooltip/tooltip.c @@ -151,22 +151,22 @@ void tooltip_adjust_geometry() Panel* panel = g_tooltip.panel; int screen_width = server.monitor[panel->monitor].x + server.monitor[panel->monitor].width; int screen_height = server.monitor[panel->monitor].y + server.monitor[panel->monitor].height; - if ( x+width <= screen_width && y+height <= screen_height && x>=0 && y>=0) + if ( x+width <= screen_width && y+height <= screen_height && x>=server.monitor[panel->monitor].x && y>=server.monitor[panel->monitor].y ) return; // no adjustment needed if (panel_horizontal) { min_x=0; - max_width=screen_width; - max_height=screen_height-panel->area.height; + max_width=server.monitor[panel->monitor].width; + max_height=server.monitor[panel->monitor].height-panel->area.height; if (panel_position & BOTTOM) min_y=0; else min_y=panel->area.height; } else { - max_width=screen_width-panel->area.width; + max_width=server.monitor[panel->monitor].width-panel->area.width; min_y=0; - max_height=screen_height; + max_height=server.monitor[panel->monitor].height; if (panel_position & LEFT) min_x=panel->area.width; else diff --git a/src/util/timer.c b/src/util/timer.c index 8d22082..01bd768 100644 --- a/src/util/timer.c +++ b/src/util/timer.c @@ -77,6 +77,10 @@ void cleanup_timeout() free(t); timeout_list = g_slist_remove(timeout_list, t); } + if (multi_timeouts) { + g_hash_table_destroy(multi_timeouts); + multi_timeouts = 0; + } } /** Implementation notes for timeouts: The timeouts are kept in a GSList sorted by their diff --git a/src/util/window.c b/src/util/window.c index dc38d24..98e3075 100644 --- a/src/util/window.c +++ b/src/util/window.c @@ -221,17 +221,17 @@ int window_is_active (Window win) } -int get_icon_count (long *data, int num) +int get_icon_count (gulong *data, int num) { int count, pos, w, h; count = 0; pos = 0; - while (pos < num) { + while (pos+2 < num) { w = data[pos++]; h = data[pos++]; pos += w * h; - if (pos > num || w * h == 0) break; + if (pos > num || w <= 0 || h <= 0) break; count++; } @@ -239,10 +239,10 @@ int get_icon_count (long *data, int num) } -long *get_best_icon (long *data, int icon_count, int num, int *iw, int *ih, int best_icon_size) +gulong *get_best_icon (gulong *data, int icon_count, int num, int *iw, int *ih, int best_icon_size) { int width[icon_count], height[icon_count], pos, i, w, h; - long *icon_data[icon_count]; + gulong *icon_data[icon_count]; /* List up icons */ pos = 0; diff --git a/src/util/window.h b/src/util/window.h index 47798cb..074079e 100644 --- a/src/util/window.h +++ b/src/util/window.h @@ -22,8 +22,8 @@ int window_is_urgent (Window win); int window_is_hidden (Window win); int window_is_active (Window win); int window_is_skip_taskbar (Window win); -int get_icon_count (long *data, int num); -long *get_best_icon (long *data, int icon_count, int num, int *iw, int *ih, int best_icon_size); +int get_icon_count (gulong *data, int num); +gulong *get_best_icon (gulong *data, int icon_count, int num, int *iw, int *ih, int best_icon_size); void window_maximize_restore (Window win); void window_toggle_shade (Window win); int window_get_desktop (Window win);