// --------------------------------------------------
// taskbar point to the first taskbar in panel.area.list.
// number of tasbar == nb_desktop
+ // taskbar[i] is used to loop over taskbar,
+ // while panel->area.list is used to loop over all panel's objects
Taskbar *taskbar;
int nb_desktop;
Taskbar *click_taskbar (Panel *panel, int x, int y)
{
- GSList *l0;
- Taskbar *tskbar = NULL;
+ Taskbar *tskbar;
+ int i;
+
if (panel_horizontal) {
- for (l0 = panel->area.list; l0 ; l0 = l0->next) {
- tskbar = l0->data;
+ for (i=0; i < panel->nb_desktop ; i++) {
+ tskbar = &panel->taskbar[i];
if (!tskbar->area.on_screen) continue;
if (x >= tskbar->area.posx && x <= (tskbar->area.posx + tskbar->area.width))
- break;
+ return tskbar;
}
}
else {
- for (l0 = panel->area.list; l0 ; l0 = l0->next) {
- tskbar = l0->data;
+ for (i=0; i < panel->nb_desktop ; i++) {
+ tskbar = &panel->taskbar[i];
if (!tskbar->area.on_screen) continue;
if (y >= tskbar->area.posy && y <= (tskbar->area.posy + tskbar->area.height))
- break;
+ return tskbar;
}
}
- return tskbar;
+ return NULL;
}