Enlightenment CVS committal

Author  : xcomputerman
Project : e17
Module  : apps/e_utils

Dir     : e17/apps/e_utils/src/bin/entangle


Modified Files:
        entangle_ui.c 


Log Message:
- Add mouse wheel support to Entangle
- Drag with left mouse button only

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/apps/e_utils/src/bin/entangle/entangle_ui.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- entangle_ui.c       5 Sep 2005 16:43:15 -0000       1.15
+++ entangle_ui.c       12 Sep 2005 04:45:11 -0000      1.16
@@ -17,6 +17,10 @@
                                         Evas_Object *container);
 
 /* container scroll callbacks */
+static void entangle_ui_cb_scroll_up(void *data, Evas_Object *obj,
+                                const char *emission, const char *src);
+static void entangle_ui_cb_scroll_down(void *data, Evas_Object *obj,
+                                const char *emission, const char *src);
 static void entangle_ui_cb_up_pressed(void *data, Evas_Object *obj,
                                 const char *emission, const char *src);
 static void entangle_ui_cb_up_released(void *data, Evas_Object *obj,
@@ -329,9 +333,77 @@
         edje_object_signal_callback_add(edje, "up,click,release", "*", 
entangle_ui_cb_up_released, NULL);
         edje_object_signal_callback_add(edje, "down,click,release", "*", 
entangle_ui_cb_down_released, NULL);
     }
+    
+    edje_object_signal_callback_add(edje, "wheel,up", "*", 
entangle_ui_cb_scroll_up, NULL);
+    edje_object_signal_callback_add(edje, "wheel,down", "*", 
entangle_ui_cb_scroll_down, NULL);
+    
     return 1;
 }
 
+static int _scroll_count = 0;
+
+static int
+entangle_ui_cb_scroll_stop(void *data)
+{
+   Evas *evas = data;
+   Evas_Object *o;
+
+   if (_scroll_count > 0)
+      _scroll_count--;
+   else if (_scroll_count < 0)
+      _scroll_count++;
+   
+   if (!_scroll_count)
+   {
+      o = evas_object_name_find(evas, "eapps_bar");
+      esmart_container_scroll_stop(o);
+   }
+   
+   return 0;
+}
+  
+static void
+entangle_ui_cb_scroll_up(void *data __UNUSED__, Evas_Object *obj,
+                                const char *emission __UNUSED__, 
+                                const char *src __UNUSED__)
+{
+    Evas *evas;
+    Evas_Object *o;
+
+    evas = evas_object_evas_get(obj);
+    o = evas_object_name_find(evas, "eapps_bar");
+    if (!_scroll_count)
+    {
+       esmart_container_scroll_start(o, 4);
+    }
+    if (_scroll_count < 0)
+       _scroll_count = 1;
+    else
+       _scroll_count++;
+    ecore_timer_add(0.25, entangle_ui_cb_scroll_stop, evas);
+}
+
+static void
+entangle_ui_cb_scroll_down(void *data __UNUSED__, Evas_Object *obj,
+                                const char *emission __UNUSED__, 
+                                const char *src __UNUSED__)
+{
+    Evas *evas;
+    Evas_Object *o;
+
+    evas = evas_object_evas_get(obj);
+    o = evas_object_name_find(evas, "eapps_bar");
+    if (!_scroll_count)
+    {
+       esmart_container_scroll_start(o, -4);
+    }
+    if (_scroll_count > 0)
+       _scroll_count = -1;
+    else
+       _scroll_count--;
+    ecore_timer_add(0.25, entangle_ui_cb_scroll_stop, evas);
+}
+
 static void
 entangle_ui_cb_up_pressed(void *data __UNUSED__, Evas_Object *obj,
                                 const char *emission __UNUSED__, 
@@ -384,7 +456,6 @@
     esmart_container_scroll_stop(o);
 }
 
-
 static void
 entangle_ui_cb_menu_up_pressed(void *data __UNUSED__, Evas_Object *obj,
                                 const char *emission __UNUSED__, 
@@ -398,6 +469,7 @@
     esmart_container_scroll_start(o, 2);        
 }
 
+
 static void
 entangle_ui_cb_menu_up_released(void *data __UNUSED__, Evas_Object *obj,
                                 const char *emission __UNUSED__, 
@@ -687,19 +759,22 @@
 
     if ((e->canvas.y > y) && (e->canvas.y < (y + h)))
     {
-        o = edje_object_add(evas);
-        edje_object_file_set(o, eapp->path, "icon");
-        evas_object_move(o, e->canvas.x - 18, e->canvas.y - 18);
-        evas_object_resize(o, 36, 36);
-        evas_object_layer_set(o, 2);
-        evas_object_color_set(o, 255, 255, 255, 198);
-        evas_object_show(o);
-
-        evas_object_data_set(o, "eapp", eapp);
-        evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_MOVE,
-                                            entangle_ui_cb_mouse_move, o);
-        evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP,
-                                            entangle_ui_cb_mouse_up, o);
+        if (e->button == 1)
+        {
+            o = edje_object_add(evas);
+            edje_object_file_set(o, eapp->path, "icon");
+            evas_object_move(o, e->canvas.x - 18, e->canvas.y - 18);
+            evas_object_resize(o, 36, 36);
+            evas_object_layer_set(o, 2);
+            evas_object_color_set(o, 255, 255, 255, 198);
+            evas_object_show(o);
+
+            evas_object_data_set(o, "eapp", eapp);
+            evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_MOVE,
+                                                entangle_ui_cb_mouse_move, o);
+            evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP,
+                                                entangle_ui_cb_mouse_up, o);
+        }
     }
 }
 
@@ -719,6 +794,7 @@
     o = evas_object_name_find(evas, "edje");
     edje_object_part_geometry_get(o, "menu_base", &x, &y, &w, &h);
 
+        
     if ((e->canvas.x > x) && (e->canvas.y > y)
             && (e->canvas.x < (x + w)) && (e->canvas.y < (y + h)))
     {




-------------------------------------------------------
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