*fix* segfault fixed when removing last desktop and we've been on last desktop
git-svn-id: http://tint2.googlecode.com/svn/trunk@303 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
c93bf5e1f3
commit
527c91f005
2 changed files with 16 additions and 9 deletions
|
@ -75,6 +75,7 @@ Task *add_task (Window win)
|
|||
Taskbar *tskbar;
|
||||
Task *new_tsk2=0;
|
||||
int i, j;
|
||||
// QUESTION: Do we need to iterate over nb_panel (we know the monitor, why not taking panel1[monitor]???
|
||||
for (i=0 ; i < nb_panel ; i++) {
|
||||
for (j=0 ; j < panel1[i].nb_desktop ; j++) {
|
||||
if (new_tsk.desktop != ALLDESKTOP && new_tsk.desktop != j) continue;
|
||||
|
|
24
src/tint.c
24
src/tint.c
|
@ -411,8 +411,11 @@ void event_property_notify (XEvent *e)
|
|||
Panel *panel = &panel1[i];
|
||||
if (panel_mode == MULTI_DESKTOP && panel->g_taskbar.use_active) {
|
||||
// redraw both taskbar
|
||||
panel->taskbar[old_desktop].area.is_active = 0;
|
||||
panel->taskbar[old_desktop].area.resize = 1;
|
||||
if (server.nb_desktop > old_desktop) {
|
||||
// can happen if last desktop is deleted and we've been on the last desktop
|
||||
panel->taskbar[old_desktop].area.is_active = 0;
|
||||
panel->taskbar[old_desktop].area.resize = 1;
|
||||
}
|
||||
panel->taskbar[server.desktop].area.is_active = 1;
|
||||
panel->taskbar[server.desktop].area.resize = 1;
|
||||
panel_refresh = 1;
|
||||
|
@ -421,13 +424,15 @@ void event_property_notify (XEvent *e)
|
|||
Taskbar *tskbar;
|
||||
Task *tsk;
|
||||
GSList *l;
|
||||
tskbar = &panel->taskbar[old_desktop];
|
||||
for (l = tskbar->area.list; l ; l = l->next) {
|
||||
tsk = l->data;
|
||||
if (tsk->desktop == ALLDESKTOP) {
|
||||
tsk->area.on_screen = 0;
|
||||
tskbar->area.resize = 1;
|
||||
panel_refresh = 1;
|
||||
if (server.nb_desktop > old_desktop) {
|
||||
tskbar = &panel->taskbar[old_desktop];
|
||||
for (l = tskbar->area.list; l ; l = l->next) {
|
||||
tsk = l->data;
|
||||
if (tsk->desktop == ALLDESKTOP) {
|
||||
tsk->area.on_screen = 0;
|
||||
tskbar->area.resize = 1;
|
||||
panel_refresh = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
tskbar = &panel->taskbar[server.desktop];
|
||||
|
@ -710,6 +715,7 @@ int main (int argc, char *argv[])
|
|||
if (panel_refresh) {
|
||||
panel_refresh = 0;
|
||||
|
||||
// QUESTION: do we need this first refresh_systray, because we check refresh_systray once again later...
|
||||
if (refresh_systray) {
|
||||
panel = (Panel*)systray.area.panel;
|
||||
XSetWindowBackgroundPixmap (server.dsp, panel->main_win, None);
|
||||
|
|
Loading…
Reference in a new issue