Enlightenment CVS committal

Author  : rephorm
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/pager


Modified Files:
        e_mod_main.c 


Log Message:


Patches from Jonathan 'giard' Turner to add scroll wheel desk switching to the 
pager, and fix a bug with pager win dragging and iconified windows.


===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v
retrieving revision 1.122
retrieving revision 1.123
diff -u -3 -r1.122 -r1.123
--- e_mod_main.c        11 Sep 2005 06:03:13 -0000      1.122
+++ e_mod_main.c        13 Sep 2005 00:27:53 -0000      1.123
@@ -60,6 +60,7 @@
 static void        _pager_desk_cb_mouse_down(void *data, Evas *e, Evas_Object 
*obj, void *event_info);
 static void        _pager_desk_cb_mouse_up(void *data, Evas *e, Evas_Object 
*obj, void *event_info);
 static void        _pager_desk_cb_mouse_move(void *data, Evas *e, Evas_Object 
*obj, void *event_info);
+static void        _pager_desk_cb_mouse_wheel(void *data, Evas *e, Evas_Object 
*obj, void *event_info);
 
 static void        _pager_desk_cb_intercept_move(void *data, Evas_Object *o, 
Evas_Coord x, Evas_Coord y);
 static void        _pager_desk_cb_intercept_resize(void *data, Evas_Object *o, 
Evas_Coord w, Evas_Coord h);
@@ -736,6 +737,7 @@
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_pager_desk_cb_mouse_down, pd);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, 
_pager_desk_cb_mouse_up, pd);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, 
_pager_desk_cb_mouse_move, pd);
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_WHEEL, 
_pager_desk_cb_mouse_wheel, pd);
    evas_object_show(o);
    
    o = e_layout_add(face->evas);
@@ -1129,7 +1131,10 @@
             pd = l2->data;
             pw = _pager_desk_border_find(pd, ev->border);
             if (pw)
-              evas_object_hide(pw->window_object);
+              {
+                 evas_object_hide(pw->window_object);
+                 evas_object_hide(pw->event_object);
+              }
          }
      }
    return 1;
@@ -1158,7 +1163,10 @@
             pd = l2->data;
             pw = _pager_desk_border_find(pd, ev->border);
             if (pw)
-              evas_object_show(pw->window_object);
+              {
+                 evas_object_show(pw->window_object);
+                 evas_object_show(pw->event_object);
+              }
          }
      }
    return 1;
@@ -1955,6 +1963,61 @@
 
 }
 
+static void
+_pager_desk_cb_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
+{
+   Evas_Event_Mouse_Wheel *ev;
+   Evas_List              *l;
+   Pager_Desk             *desk;
+   Pager_Face             *face;
+   
+   ev = event_info;
+   desk = data;
+   face = desk->face;
+   l = face->desks;
+   
+   for (l = face->desks; l; l = l->next)
+     {
+       Pager_Desk *pd; 
+       pd = l->data;
+       if (pd->current)
+         {
+            /* Mouse wheel up, scroll back through desks */
+            if (ev->z < 0)
+              {
+                 if (l->prev) 
+                   {
+                      pd = l->prev->data;
+                      e_desk_show(pd->desk);
+                   }
+                 else
+                   {
+                      /* We've looped around, go to the last desk. Not sure if 
there's a better way. */
+                      Evas_List  *l2;
+                      for (l2 = face->desks; l2->next; l2 = l2->next);
+                      pd = l2->data;
+                      e_desk_show(pd->desk);
+                   }
+              }
+            /* Mouse wheel down, scroll forward through desks */
+            else if (ev->z > 0)
+              {
+                 if (l->next) 
+                   {
+                      pd = l->next->data;
+                      e_desk_show(pd->desk);
+                   }
+                 else
+                   {
+                      /* We've looped around, start back at the first desk */
+                      pd = face->desks->data;
+                      e_desk_show(pd->desk);
+                   }
+              }
+            break;
+         }
+     }
+}
 /*****/
 
 static void




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to