+ if (!tsk) return;
+ int desk;
+ switch (action) {
+ case CLOSE:
+ set_close (tsk->win);
+ break;
+ case TOGGLE:
+ set_active(tsk->win);
+ break;
+ case ICONIFY:
+ XIconifyWindow (server.dsp, tsk->win, server.screen);
+ break;
+ case TOGGLE_ICONIFY:
+ if (task_active && tsk->win == task_active->win)
+ XIconifyWindow (server.dsp, tsk->win, server.screen);
+ else
+ set_active (tsk->win);
+ break;
+ case SHADE:
+ window_toggle_shade (tsk->win);
+ break;
+ case MAXIMIZE_RESTORE:
+ window_maximize_restore (tsk->win);
+ break;
+ case MAXIMIZE:
+ window_maximize_restore (tsk->win);
+ break;
+ case RESTORE:
+ window_maximize_restore (tsk->win);
+ break;
+ case DESKTOP_LEFT:
+ if ( tsk->desktop == 0 ) break;
+ desk = tsk->desktop - 1;
+ windows_set_desktop(tsk->win, desk);
+ if (desk == server.desktop)
+ set_active(tsk->win);
+ break;
+ case DESKTOP_RIGHT:
+ if (tsk->desktop == server.nb_desktop ) break;
+ desk = tsk->desktop + 1;
+ windows_set_desktop(tsk->win, desk);
+ if (desk == server.desktop)
+ set_active(tsk->win);
+ break;
+ case NEXT_TASK:
+ if (task_active) {
+ Task *tsk1;
+ tsk1 = next_task(task_active);
+ set_active(tsk1->win);
+ }
+ break;
+ case PREV_TASK:
+ if (task_active) {
+ Task *tsk1;
+ tsk1 = prev_task(task_active);
+ set_active(tsk1->win);
+ }
+ }
+}
+
+
+int tint2_handles_click(Panel* panel, XButtonEvent* e)
+{
+ Task* task = click_task(panel, e->x, e->y);
+ if (task) {
+ if( (e->button == 1)
+ || (e->button == 2 && mouse_middle != 0)
+ || (e->button == 3 && mouse_right != 0)
+ || (e->button == 4 && mouse_scroll_up != 0)
+ || (e->button == 5 && mouse_scroll_down !=0) )
+ {
+ return 1;
+ }
+ else
+ return 0;
+ }
+ LauncherIcon *icon = click_launcher_icon(panel, e->x, e->y);
+ if (icon) {
+ if (e->button == 1) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+ // no launcher/task clicked --> check if taskbar clicked
+ Taskbar *tskbar = click_taskbar(panel, e->x, e->y);
+ if (tskbar && e->button == 1 && panel_mode == MULTI_DESKTOP)
+ return 1;
+ if (click_clock(panel, e->x, e->y)) {
+ if ( (e->button == 1 && clock_lclick_command) || (e->button == 3 && clock_rclick_command) )
+ return 1;
+ else
+ return 0;
+ }
+ return 0;
+}
+
+
+void forward_click(XEvent* e)
+{
+ // forward the click to the desktop window (thanks conky)
+ XUngrabPointer(server.dsp, e->xbutton.time);
+ e->xbutton.window = server.root_win;
+ // icewm doesn't open under the mouse.
+ // and xfce doesn't open at all.
+ e->xbutton.x = e->xbutton.x_root;
+ e->xbutton.y = e->xbutton.y_root;
+ //printf("**** %d, %d\n", e->xbutton.x, e->xbutton.y);
+ //XSetInputFocus(server.dsp, e->xbutton.window, RevertToParent, e->xbutton.time);
+ XSendEvent(server.dsp, e->xbutton.window, False, ButtonPressMask, e);