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