Hi everybody,

I have done some modifications on e17, module pager and engage code to
switch between virtual desktops easily with mouse wheel.
The e_zone.c patch allows to switch between virtual desktops by using
mouse wheel on the background.
The pager_e_mod_main.c patch does the same by using mouse wheel on the
pager module.
And the engage_e_mod_main.c is just a small modification of the behavior
of the current mouse wheel use.

Here are the 3 patches if you are interested.

Thanks to the e17 team for their unbelievable work ;)

MoOm 
--- e_mod_main.c.orig	2005-03-15 19:28:35.000000000 +0100
+++ e_mod_main.c	2005-03-19 09:45:02.467132584 +0100
@@ -1760,6 +1760,8 @@
 	{
 	  if(ic->selected_app->next)
 	    ic->selected_app = ic->selected_app->next;
+     else
+       ic->selected_app = ic->extra_icons;
 	}
     }
   else // Wheel Up, traverse counterclockwise
@@ -1770,6 +1772,8 @@
 	{
 	  if(ic->selected_app->prev)
 	    ic->selected_app = ic->selected_app->prev;
+     else
+       ic->selected_app = ic->extra_icons->last;
 	}
     }
   
--- e_zone.c.orig	2005-03-15 11:26:05.000000000 +0100
+++ e_zone.c	2005-03-19 00:56:09.000000000 +0100
@@ -12,6 +12,7 @@
 static void _e_zone_cb_bg_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 static void _e_zone_cb_bg_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 static void _e_zone_cb_bg_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void _e_zone_cb_bg_mouse_wheel(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 static void _e_zone_event_zone_desk_count_set_free(void *data, void *ev);
 
 int E_EVENT_ZONE_DESK_COUNT_SET = 0;
@@ -88,6 +89,7 @@
 	evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_zone_cb_bg_mouse_down, zone);
 	evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP,   _e_zone_cb_bg_mouse_up, zone);
 	evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_zone_cb_bg_mouse_move, zone);
+	evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_WHEEL, _e_zone_cb_bg_mouse_wheel, zone);
      }
 
    zone->desk_x_count = 0;
@@ -300,6 +302,21 @@
    zone = data;
 }
 
+static void
+_e_zone_cb_bg_mouse_wheel(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+   E_Zone *zone;
+   Evas_Event_Mouse_Wheel *ev;
+   
+   ev = (Evas_Event_Mouse_Wheel *)event_info;   
+   zone = data;
+
+	if (ev->z < 0)
+		e_desk_prev(zone);
+	else
+		e_desk_next(zone);
+}
+
 void
 e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count)
 {
--- e_mod_main.c.orig	2005-03-18 18:13:10.000000000 +0100
+++ e_mod_main.c	2005-03-19 01:29:56.000000000 +0100
@@ -56,6 +56,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_face_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);
@@ -513,6 +514,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_face_cb_mouse_wheel, face->zone);
    evas_object_show(o);
    
    o = e_layout_add(face->evas);
@@ -1182,6 +1184,21 @@
    desk = data;
 }
 
+static void
+_pager_face_cb_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_Zone *zone;
+   Evas_Event_Mouse_Wheel *ev;
+   
+   ev = (Evas_Event_Mouse_Wheel *)event_info;   
+   zone = data;
+
+	if (ev->z < 0)
+		e_desk_prev(zone);
+	else
+		e_desk_next(zone);
+}
+
 /*****/
 
 static void

Reply via email to