]> Dogcows Code - chaz/tint2/commitdiff
cleanup and add desktop_right/desktop_left action on task (by jackp)
authorThierry Lorthiois <lorthiois@bbsoft.fr>
Sat, 29 Aug 2009 15:14:55 +0000 (15:14 +0000)
committerThierry Lorthiois <lorthiois@bbsoft.fr>
Sat, 29 Aug 2009 15:14:55 +0000 (15:14 +0000)
ChangeLog
src/config.c
src/tint.c
src/util/common.h

index ef853c0e95aa547dedc6721cf54de5a8b89d4e19..45e6d80f95bedf84255a8df5dd1e7edfa2da2e18 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2009-08-29
+- cleanup and add desktop_right/desktop_left action on task (by jackp)
+
 2009-08-29
 - adjust saturation/brightness on task icon
 
index bb2603a2c8ccfa2b0af9a9fe9de995d912b3037a..a2d6fa83dbc4301b1443ac2a87f98830303fd607 100644 (file)
@@ -228,6 +228,10 @@ void get_action (char *event, int *action)
       *action = TOGGLE_ICONIFY;
    else if (strcmp (event, "maximize_restore") == 0)
       *action = MAXIMIZE_RESTORE;
+   else if (strcmp (event, "desktop_left") == 0)
+      *action = DESKTOP_LEFT;
+   else if (strcmp (event, "desktop_right") == 0)
+      *action = DESKTOP_RIGHT;
 }
 
 
index f08692c03a21ec7a617250ad40dec97d67716065..417f66cec71b476fa4f3456ebfc28e9b80927e16 100644 (file)
@@ -200,6 +200,7 @@ int click_clock(Panel *panel, XEvent *e)
 void window_action (Task *tsk, int action)
 {
    if (!tsk) return;
+       int desk;
        switch (action) {
                case CLOSE:
                        set_close (tsk->win);
@@ -226,6 +227,19 @@ void window_action (Task *tsk, int action)
                case RESTORE:
                        window_maximize_restore (tsk->win);
                        break;
+               case DESKTOP_LEFT:
+                       if ( desk == 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 (desk == server.nb_desktop ) break;
+                       desk = tsk->desktop + 1;
+                       windows_set_desktop(tsk->win, desk);
+                       if (desk == server.desktop)
+                               set_active(tsk->win);
        }
 }
 
@@ -234,23 +248,7 @@ void event_button_press (XEvent *e)
 {
    Panel *panel = get_panel(e->xany.window);
        if (!panel) return;
-/*
-       if (wm_menu) {
-               if ((panel_horizontal && (e->xbutton.x < panel->area.paddingxlr || e->xbutton.x > panel->area.width-panel->area.paddingxlr || e->xbutton.y < panel->area.paddingy || e->xbutton.y > panel->area.paddingy+panel->g_taskbar.height)) || (!panel_horizontal && (e->xbutton.y < panel->area.paddingxlr || e->xbutton.y > panel->area.height-panel->area.paddingxlr || e->xbutton.x < panel->area.paddingy || e->xbutton.x > panel->area.paddingy+panel->g_taskbar.width))) {
-                       // 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);
-                       return;
-               }
-       }
-*/
+
        if (panel_mode == MULTI_DESKTOP)
                task_drag = click_task(panel, e);
 
@@ -267,49 +265,7 @@ void event_button_press (XEvent *e)
                XSendEvent(server.dsp, e->xbutton.window, False, ButtonPressMask, e);
                return;
    }
-/*
-       if (e->xbutton.button != 1) return;
-   GSList *l0;
-   Taskbar *tskbar;
-       if (panel_horizontal) {
-               int x = e->xbutton.x;
-               for (l0 = panel->area.list; l0 ; l0 = l0->next) {
-                       tskbar = l0->data;
-                       if (!tskbar->area.on_screen) continue;
-                       if (x >= tskbar->area.posx && x <= (tskbar->area.posx + tskbar->area.width))
-                               break;
-               }
-               if (l0) {
-                       Task *tsk;
-                       for (l0 = tskbar->area.list; l0 ; l0 = l0->next) {
-                               tsk = l0->data;
-                               if (x >= tsk->area.posx && x <= (tsk->area.posx + tsk->area.width)) {
-                                       task_drag = tsk;
-                                       break;
-                               }
-                       }
-               }
-       }
-       else {
-               int y = e->xbutton.y;
-               for (l0 = panel->area.list; l0 ; l0 = l0->next) {
-                       tskbar = l0->data;
-                       if (!tskbar->area.on_screen) continue;
-                       if (y >= tskbar->area.posy && y <= (tskbar->area.posy + tskbar->area.height))
-                               break;
-               }
-               if (l0) {
-                       Task *tsk;
-                       for (l0 = tskbar->area.list; l0 ; l0 = l0->next) {
-                               tsk = l0->data;
-                               if (y >= tsk->area.posy && y <= (tsk->area.posy + tsk->area.height)) {
-                                       task_drag = tsk;
-                                       break;
-                               }
-                       }
-               }
-       }
-*/
+
    XLowerWindow (server.dsp, panel->main_win);
 }
 
@@ -325,16 +281,6 @@ void event_button_release (XEvent *e)
                        XSendEvent(server.dsp, e->xbutton.window, False, ButtonReleaseMask, e);
                        return;
        }
-/*
-       if (wm_menu) {
-               if ((panel_horizontal && (e->xbutton.x < panel->area.paddingxlr || e->xbutton.x > panel->area.width-panel->area.paddingxlr || e->xbutton.y < panel->area.paddingy || e->xbutton.y > panel->area.paddingy+panel->g_taskbar.height)) || (!panel_horizontal && (e->xbutton.y < panel->area.paddingxlr || e->xbutton.y > panel->area.height-panel->area.paddingxlr || e->xbutton.x < panel->area.paddingy || e->xbutton.x > panel->area.paddingy+panel->g_taskbar.width))) {
-                       // forward the click to the desktop window (thanks conky)
-                       e->xbutton.window = server.root_win;
-                       XSendEvent(server.dsp, e->xbutton.window, False, ButtonReleaseMask, e);
-                       return;
-               }
-       }
-*/
 
    int action = TOGGLE_ICONIFY;
    switch (e->xbutton.button) {
@@ -387,97 +333,17 @@ void event_button_release (XEvent *e)
       else task_drag = 0;
    }
 
-   // switch desktop
-   if (panel_mode == MULTI_DESKTOP && action != mouse_tilt_left && action != mouse_tilt_right) {
-      if (tskbar->desktop != server.desktop && action != CLOSE)
-         set_desktop (tskbar->desktop);
-       }
-
-   // action on task
-   window_action( click_task(panel, e), action);
-
-   // to keep window below
-   XLowerWindow (server.dsp, panel->main_win);
-/*
-   int x = e->xbutton.x;
-   int y = e->xbutton.y;
-   // search taskbar
-   Taskbar *tskbar;
-   GSList *l0;
-       Clock clk = panel->clock;
-       if (panel_horizontal) {
-               if (clk.area.on_screen && x >= clk.area.posx && x <= (clk.area.posx + clk.area.width))
-                       clock_action(e->xbutton.button);
-               else {
-                       for (l0 = panel->area.list; l0 ; l0 = l0->next) {
-                               tskbar = l0->data;
-                               if (!tskbar->area.on_screen) continue;
-                               if (x >= tskbar->area.posx && x <= (tskbar->area.posx + tskbar->area.width))
-                                       goto suite;
-                       }
-               }
-       }
-       else {
-               if (clk.area.on_screen && y >= clk.area.posy && y <= (clk.area.posy + clk.area.height))
-                       clock_action(e->xbutton.button);
-               else {
-                       for (l0 = panel->area.list; l0 ; l0 = l0->next) {
-                               tskbar = l0->data;
-                               if (!tskbar->area.on_screen) continue;
-                               if (y >= tskbar->area.posy && y <= (tskbar->area.posy + tskbar->area.height))
-                                       goto suite;
-                       }
-               }
-       }
-
-   // TODO: check better solution to keep window below
-   XLowerWindow (server.dsp, panel->main_win);
-   task_drag = 0;
-   return;
-
-suite:
-   // drag and drop task
-   if (task_drag) {
-      if (tskbar != task_drag->area.parent && action == TOGGLE_ICONIFY) {
-         if (task_drag->desktop != ALLDESKTOP && panel_mode == MULTI_DESKTOP) {
-            windows_set_desktop(task_drag->win, tskbar->desktop);
-            if (tskbar->desktop == server.desktop)
-               set_active(task_drag->win);
-            task_drag = 0;
-         }
-         return;
-      }
-      else task_drag = 0;
-   }
-
    // switch desktop
    if (panel_mode == MULTI_DESKTOP) {
-      if (tskbar->desktop != server.desktop && action != CLOSE)
+      if (tskbar->desktop != server.desktop && action != CLOSE && action != mouse_tilt_left && action != mouse_tilt_right)
          set_desktop (tskbar->desktop);
        }
 
    // action on task
-   Task *tsk;
-   GSList *l;
-   for (l = tskbar->area.list ; l ; l = l->next) {
-      tsk = l->data;
-               if (panel_horizontal) {
-                       if (x >= tsk->area.posx && x <= (tsk->area.posx + tsk->area.width)) {
-                               window_action (tsk, action);
-                               break;
-                       }
-               }
-               else {
-                       if (y >= tsk->area.posy && y <= (tsk->area.posy + tsk->area.height)) {
-                               window_action (tsk, action);
-                               break;
-                       }
-               }
-   }
+   window_action( click_task(panel, e), action);
 
    // to keep window below
    XLowerWindow (server.dsp, panel->main_win);
-       */
 }
 
 
index bb67481d9af66dae501b3510828b9e26b34eb764..4e6abb767aef0d18dc6375d8975916bb62f73fa4 100644 (file)
@@ -28,7 +28,7 @@ FXint fxmalloc(void** ptr,unsigned long size){
 */
 
 // mouse actions
-enum { NONE=0, CLOSE, TOGGLE, ICONIFY, SHADE, TOGGLE_ICONIFY, MAXIMIZE_RESTORE, MAXIMIZE, RESTORE };
+enum { NONE=0, CLOSE, TOGGLE, ICONIFY, SHADE, TOGGLE_ICONIFY, MAXIMIZE_RESTORE, MAXIMIZE, RESTORE, DESKTOP_LEFT, DESKTOP_RIGHT };
 
 #define ALLDESKTOP  0xFFFFFFFF
 
This page took 0.033475 seconds and 4 git commands to generate.