all repos — tint2 @ 906ee82dbf571e820d85988aae5a258fd1412205

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

*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()


git-svn-id: http://tint2.googlecode.com/svn/trunk@544 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
Andreas.Fink85 Andreas.Fink85@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
commit

906ee82dbf571e820d85988aae5a258fd1412205

parent

9e81bcbf6a03c54a42d77d9c4747182eb5d112df

M src/panel.csrc/panel.c

@@ -510,7 +510,7 @@ long prop[5] = { 2, 0, 0, 0, 0 };

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);
M src/systray/systraybar.csrc/systray/systraybar.c

@@ -278,7 +278,7 @@ net_sel_win = XCreateSimpleWindow(server.dsp, server.root_win, -1, -1, 1, 1, 0, 0, 0);

// 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))
M src/taskbar/task.csrc/taskbar/task.c

@@ -209,7 +209,7 @@ if (!panel->g_task.icon) return;

int i; Imlib_Image img = NULL; XWMHints *hints = 0; - long *data = 0; + gulong *data = 0; int k; for (k=0; k<TASK_STATE_COUNT; ++k) {

@@ -224,10 +224,9 @@ data = server_get_property (tsk->win, server.atom._NET_WM_ICON, XA_CARDINAL, &i);

if (data) { // get ARGB icon int w, h; - long *tmp_data; + gulong *tmp_data; tmp_data = get_best_icon (data, get_icon_count (data, i), i, &w, &h, panel->g_task.icon_size1); - #ifdef __x86_64__ DATA32 icon_data[w * h]; int length = w * h;
M src/tint.csrc/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) {
M src/tooltip/tooltip.csrc/tooltip/tooltip.c

@@ -151,22 +151,22 @@ int min_x, min_y, max_width, max_height;

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
M src/util/timer.csrc/util/timer.c

@@ -77,6 +77,10 @@ stop_multi_timeout(t);

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
M src/util/window.csrc/util/window.c

@@ -221,17 +221,17 @@ return (win == get_property32(server.root_win, server.atom._NET_ACTIVE_WINDOW, XA_WINDOW));

} -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 @@ return count;

} -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;
M src/util/window.hsrc/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);