*fix* better internal urgent task handling

*fix* urgent task blinks on all desktops for omnipresent windows
*fix* better active window handling on desktop changes
*fix* better active window handling if switching omnipresent property



git-svn-id: http://tint2.googlecode.com/svn/trunk@302 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
Andreas.Fink85
2009-12-29 19:55:25 +00:00
parent 890262073a
commit c93bf5e1f3
7 changed files with 62 additions and 81 deletions

View File

@@ -400,6 +400,7 @@ void event_property_notify (XEvent *e)
panel1[i].area.resize = 1;
}
task_refresh_tasklist();
active_task();
panel_refresh = 1;
}
// Change desktop
@@ -559,16 +560,12 @@ void event_property_notify (XEvent *e)
// Window desktop changed
else if (at == server.atom._NET_WM_DESKTOP) {
int desktop = window_get_desktop (win);
int active = tsk->area.is_active;
//printf(" Window desktop changed %d, %d\n", tsk->desktop, desktop);
// bug in windowmaker : send unecessary 'desktop changed' when focus changed
if (desktop != tsk->desktop) {
remove_task (tsk);
tsk = add_task (win);
if (tsk && active) {
tsk->area.is_active = 1;
task_active = tsk;
}
active_task();
panel_refresh = 1;
}
}
@@ -630,9 +627,13 @@ void event_configure_notify (Window win)
remove_task (tsk);
add_task (win);
if (win == window_get_active ()) {
Task *tsk = task_get_task (win);
tsk->area.is_active = 1;
task_active = tsk;
GSList* task_list = task_get_tasks(win);
while (task_list) {
Task *tsk = task_list->data;
tsk->area.is_active = 1;
task_active = tsk;
task_list = task_list->next;
}
}
panel_refresh = 1;
}