$(PROGNAME): $(FILES) $(SYSTRAYOBJ)
$(CC) $(CFLAGS) -I. -Iutil -Iclock -Itaskbar -Isystray -o $(PROGNAME) $(FILES) $(FLAGS)
- strip $(PROGNAME)
+ #strip $(PROGNAME)
install:
mkdir -p $(BINDIR)
void cleanup_taskbar()
{
- free_area(&panel.area);
-
+ GSList *l0;
+ Task *tsk;
+
int i, nb;
- Task *tsk, *next;
-
nb = panel.nb_desktop * panel.nb_monitor;
for (i=0 ; i < nb ; i++) {
-/* TODO: voir ce code !!
- for (tsk = panel.taskbar[i].tasklist; tsk ; tsk = next) {
- next = tsk->next;
+ l0 = panel.taskbar[i].area.list;
+ while (l0) {
+ tsk = l0->data;
+ l0 = l0->next;
+ // careful : remove_task change l0->next
remove_task (tsk);
}
-*/
+
+ free_area (&panel.taskbar[i].area);
}
free(panel.taskbar);
panel.taskbar = 0;
+
+ free_area(&panel.area);
}
new_tsk->title = 0;
}
if (new_tsk->icon_data) {
- XFree (new_tsk->icon_data);
+ free (new_tsk->icon_data);
new_tsk->icon_data = 0;
}
free(new_tsk);
fprintf(stderr, "task on all desktop : ignored\n");
return;
}
-
+
+ //printf("add_task %d %s\n", index(desktop, monitor), new_tsk->title);
Taskbar *tskbar;
tskbar = &panel.taskbar[index(desktop, monitor)];
new_tsk->area.parent = tskbar;
tskbar->area.list = g_slist_remove(tskbar->area.list, tsk);
resize_tasks (tskbar);
redraw (&tskbar->area);
+ //printf("remove_task %d %s\n", index(tskbar->desktop, tskbar->monitor), tsk->title);
if (tsk->title) {
free (tsk->title);
tsk->title = 0;
}
if (tsk->icon_data) {
- XFree (tsk->icon_data);
+ free (tsk->icon_data);
tsk->icon_data = 0;
}
XFreePixmap (server.dsp, tsk->area.pmap);
nb = panel.nb_desktop * panel.nb_monitor;
for (i=0 ; i < nb ; i++) {
- for (l0 = panel.taskbar[i].area.list; l0 ; l0 = l0->next) {
+ l0 = panel.taskbar[i].area.list;
+ while (l0) {
tsk = l0->data;
-
+ l0 = l0->next;
+
if (tsk->win == active_win) panel.task_active = tsk;
for (j = 0; j < num_results; j++) {
if (tsk->win == win[j]) break;
}
+ // careful : remove_task change l0->next
if (tsk->win != win[j]) remove_task (tsk);
}
}
}
/* Window icon changed */
else if (at == server.atom._NET_WM_ICON) {
- if (tsk->icon_data != 0) XFree (tsk->icon_data);
+ if (tsk->icon_data) {
+ free (tsk->icon_data);
+ tsk->icon_data = 0;
+ }
tsk->area.redraw = 1;
- tsk->icon_data = 0;
panel.refresh = 1;
}
/* Window desktop changed */