*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
This commit is contained in:
Andreas.Fink85 2010-09-12 22:00:00 +00:00
parent 9e81bcbf6a
commit 906ee82dbf
8 changed files with 21 additions and 18 deletions

View file

@ -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);

View file

@ -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))

View file

@ -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; k<TASK_STATE_COUNT; ++k) {
@ -224,10 +224,9 @@ void get_icon (Task *tsk)
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;

View file

@ -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) {

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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);