Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_combobox.c etk_event.c etk_event.h etk_scrolled_view.c 
        etk_scrolled_view.h etk_tree.c etk_viewport.c etk_viewport.h 
        etk_widget.c 


Log Message:


set on_hold flags if dragged. otherwise things always get activated if just
dragged around.

===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox.c,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -3 -r1.60 -r1.61
--- etk_combobox.c      8 Oct 2007 13:28:52 -0000       1.60
+++ etk_combobox.c      30 Jun 2008 05:53:48 -0000      1.61
@@ -1545,6 +1545,8 @@
       return ETK_TRUE;
    if (event->button != 1 && event->button != 3)
       return ETK_TRUE;
+   if (event->modifiers & ETK_MODIFIER_ON_HOLD)
+      return ETK_TRUE;
 
    etk_combobox_active_item_set(item->combobox, item);
    if (event->button == 1)
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_event.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- etk_event.c 19 Sep 2007 20:16:26 -0000      1.7
+++ etk_event.c 30 Jun 2008 05:53:49 -0000      1.8
@@ -87,6 +87,8 @@
    etk_event->timestamp = evas_event->timestamp;
    _etk_event_modifiers_wrap(evas_event->modifiers, &etk_event->modifiers);
    _etk_event_locks_wrap(evas_event->locks, &etk_event->locks);
+   if (evas_event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     etk_event->modifiers |= ETK_MODIFIER_ON_HOLD;
 }
 
 /**
@@ -108,6 +110,8 @@
    etk_event->timestamp = evas_event->timestamp;
    _etk_event_modifiers_wrap(evas_event->modifiers, &etk_event->modifiers);
    _etk_event_locks_wrap(evas_event->locks, &etk_event->locks);
+   if (evas_event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     etk_event->modifiers |= ETK_MODIFIER_ON_HOLD;
 }
 
 /**
@@ -133,6 +137,8 @@
    etk_event->timestamp = evas_event->timestamp;
    _etk_event_modifiers_wrap(evas_event->modifiers, &etk_event->modifiers);
    _etk_event_locks_wrap(evas_event->locks, &etk_event->locks);
+   if (evas_event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     etk_event->modifiers |= ETK_MODIFIER_ON_HOLD;
 }
 
 /**
@@ -155,6 +161,8 @@
    _etk_event_modifiers_wrap(evas_event->modifiers, &etk_event->modifiers);
    _etk_event_locks_wrap(evas_event->locks, &etk_event->locks);
    _etk_event_mouse_flags_wrap(evas_event->flags, &etk_event->flags);
+   if (evas_event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     etk_event->modifiers |= ETK_MODIFIER_ON_HOLD;
 }
 
 /**
@@ -177,6 +185,8 @@
    _etk_event_modifiers_wrap(evas_event->modifiers, &etk_event->modifiers);
    _etk_event_locks_wrap(evas_event->locks, &etk_event->locks);
    _etk_event_mouse_flags_wrap(evas_event->flags, &etk_event->flags);
+   if (evas_event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     etk_event->modifiers |= ETK_MODIFIER_ON_HOLD;
 }
 
 /**
@@ -200,6 +210,8 @@
    _etk_event_modifiers_wrap(evas_event->modifiers, &etk_event->modifiers);
    _etk_event_locks_wrap(evas_event->locks, &etk_event->locks);
    etk_event->timestamp = evas_event->timestamp;
+   if (evas_event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     etk_event->modifiers |= ETK_MODIFIER_ON_HOLD;
 }
 
 /**
@@ -217,6 +229,8 @@
    etk_event->timestamp = evas_event->timestamp;
    _etk_event_modifiers_wrap(evas_event->modifiers, &etk_event->modifiers);
    _etk_event_locks_wrap(evas_event->locks, &etk_event->locks);
+   if (evas_event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     etk_event->modifiers |= ETK_MODIFIER_ON_HOLD;
 }
 
 /**
@@ -234,6 +248,8 @@
    etk_event->timestamp = evas_event->timestamp;
    _etk_event_modifiers_wrap(evas_event->modifiers, &etk_event->modifiers);
    _etk_event_locks_wrap(evas_event->locks, &etk_event->locks);
+   if (evas_event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     etk_event->modifiers |= ETK_MODIFIER_ON_HOLD;
 }
 
 /**
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_event.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- etk_event.h 19 Sep 2007 20:16:26 -0000      1.9
+++ etk_event.h 30 Jun 2008 05:53:49 -0000      1.10
@@ -36,7 +36,8 @@
    ETK_MODIFIER_CTRL = 1 << 0,          /**< "Control" is pressed */
    ETK_MODIFIER_ALT = 1 << 1,           /**< "Alt" is pressed */
    ETK_MODIFIER_SHIFT = 1 << 2,         /**< "Shift" is pressed */
-   ETK_MODIFIER_WIN = 1 << 3            /**< "Win" (between "Ctrl" and "Alt") 
is pressed */
+   ETK_MODIFIER_WIN = 1 << 3,           /**< "Win" (between "Ctrl" and "Alt") 
is pressed */
+   ETK_MODIFIER_ON_HOLD = 1 << 31       /**< When the event is to be "on hold" 
and is informative only */
 } Etk_Modifiers;
 
 /** @brief The keyboard locks active when the event has been emitted */
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_scrolled_view.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -3 -r1.38 -r1.39
--- etk_scrolled_view.c 26 Jun 2008 06:03:49 -0000      1.38
+++ etk_scrolled_view.c 30 Jun 2008 05:53:49 -0000      1.39
@@ -156,6 +156,7 @@
    }
 
    etk_container_add(ETK_CONTAINER(viewport), child);
+   scrolled_view->viewport = viewport;
 }
 
 /**
@@ -719,9 +720,10 @@
       drag->old_timestamp = 0.0;
       drag->Vx = 0;
       drag->Vy = 0;
-      drag->position = event->widget;
+      drag->down_position = drag->position = event->widget;
       drag->bar_position.x = hscrollbar_range->value;
       drag->bar_position.y = vscrollbar_range->value;
+      etk_viewport_hold_events_set(scrolled_view->viewport, ETK_FALSE);
    }
    return ETK_FALSE;
 }
@@ -751,11 +753,21 @@
    hscrollbar_range = ETK_RANGE(scrolled_view->hscrollbar);
    if (drag->scroll_flag == 0) 
    {
-         drag->scroll_flag = (event->cur.widget.y - 
drag->position.y)/vscrollbar_range->step_increment || (event->cur.widget.x - 
drag->position.x)/hscrollbar_range->step_increment;
+         drag->scroll_flag = (event->cur.widget.y - 
drag->position.y)/vscrollbar_range->step_increment || (event->cur.widget.x - 
drag->position.x) / hscrollbar_range->step_increment;
    }
 
    if (drag->scroll_flag) 
    {
+      /* if we have dragged beyond 15 pixels from the down point, in any
+       * direction, set on hold flag */
+      if ((((event->cur.widget.x - drag->down_position.x) *
+           (event->cur.widget.x - drag->down_position.x)) +
+          ((event->cur.widget.y - drag->down_position.y) *
+           (event->cur.widget.y - drag->down_position.y))) >
+         (15 * 15))
+      {
+        etk_viewport_hold_events_set(scrolled_view->viewport, ETK_TRUE);
+      }
       if (drag->bar_pressed == ETK_FALSE) 
       {
          etk_range_value_set(vscrollbar_range, vscrollbar_range->value - 
(event->cur.widget.y - drag->position.y));
@@ -789,6 +801,8 @@
    if (!(scrolled_view = ETK_SCROLLED_VIEW(object)))
       return ETK_FALSE;
 
+   etk_viewport_hold_events_set(scrolled_view->viewport, ETK_FALSE);
+   
    if (!drag->dragable) 
       return ETK_FALSE;
 
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_scrolled_view.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- etk_scrolled_view.h 20 Apr 2008 18:34:09 -0000      1.14
+++ etk_scrolled_view.h 30 Jun 2008 05:53:49 -0000      1.15
@@ -38,18 +38,19 @@
 
 struct Etk_Scrolled_View_Mouse_Drag 
 {
-   Etk_Bool mouse_down;
-   Etk_Bool bar_pressed;
-   Etk_Bool dragable;
-   Etk_Bool bouncy;
-   int scroll_flag;
    Etk_Position position;
+   Etk_Position down_position;
    Etk_Position bar_position;
    double sample_magic;
-   unsigned int damping_magic;
    double timestamp;
    double old_timestamp;
    double Vx,Vy;
+   int scroll_flag;
+   unsigned int damping_magic;
+   Etk_Bool mouse_down;
+   Etk_Bool bar_pressed;
+   Etk_Bool dragable;
+   Etk_Bool bouncy;
 };
 
 /**
@@ -64,6 +65,7 @@
 
    Etk_Widget *hscrollbar;
    Etk_Widget *vscrollbar;
+   Etk_Widget *viewport;
 
    Etk_Scrolled_View_Policy hpolicy;
    Etk_Scrolled_View_Policy vpolicy;
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_tree.c,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -3 -r1.116 -r1.117
--- etk_tree.c  12 Jun 2008 08:13:04 -0000      1.116
+++ etk_tree.c  30 Jun 2008 05:53:49 -0000      1.117
@@ -3128,6 +3128,9 @@
    if (!(col = ETK_TREE_COL(data)) || !(tree = col->tree) || event->button != 
1)
       return;
 
+   if (event->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+      return;
+   
    if (tree->col_to_resize)
       tree->col_to_resize = NULL;
    else
@@ -3262,6 +3265,9 @@
    evas_object_geometry_get(obj, &x, &y, &w, &h);
    etk_event_mouse_up_wrap(ETK_WIDGET(row_object->row->tree), event_info, 
&event);
 
+   if (event.modifiers & ETK_MODIFIER_ON_HOLD)
+      return;
+   
    /* We make sure the mouse button has been released over the row */
    if (ETK_INSIDE(event.canvas.x, event.canvas.y, x, y, w, h))
    {
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_viewport.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- etk_viewport.c      26 Jun 2008 06:03:49 -0000      1.18
+++ etk_viewport.c      30 Jun 2008 05:53:49 -0000      1.19
@@ -57,6 +57,29 @@
    return etk_widget_new(ETK_VIEWPORT_TYPE, NULL);
 }
 
+/**
+ * @brief Sets the hold_events flag for the viewport
+ * This sets the hold_events flag. When set all events on children of the
+ * viewport have the ETK_MODIFIER_ON_HOLD in the modifier flags if it is
+ * used by a scrolled view
+ */
+void etk_viewport_hold_events_set(Etk_Viewport *viewport, Etk_Bool hold_events)
+{
+   if (!viewport) return;
+   viewport->hold_events = hold_events;
+}
+
+/**
+ * @brief Gets the hold_events flag for the viewport
+ * @return Returns the hold_events flag
+ */
+Etk_Bool etk_viewport_hold_events_get(Etk_Viewport *viewport)
+{
+   if (!viewport) return ETK_FALSE;
+   return viewport->hold_events;
+}
+
+
 /**************************
  *
  * Etk specific functions
@@ -168,6 +191,39 @@
  *
  **************************/
 
+static void _etk_viewport_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, 
void *event_info)
+{
+   Etk_Viewport *viewport;
+   Evas_Event_Mouse_Down *event;
+   
+   if (!(viewport = ETK_VIEWPORT(data)) || !(event = event_info))
+      return;
+   if (viewport->hold_events)
+     event->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static void _etk_viewport_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, 
void *event_info)
+{
+   Etk_Viewport *viewport;
+   Evas_Event_Mouse_Up *event;
+   
+   if (!(viewport = ETK_VIEWPORT(data)) || !(event = event_info))
+      return;
+   if (viewport->hold_events)
+     event->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
+}
+
+static void _etk_viewport_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, 
void *event_info)
+{
+   Etk_Viewport *viewport;
+   Evas_Event_Mouse_Down *event;
+   
+   if (!(viewport = ETK_VIEWPORT(data)) || !(event = event_info))
+      return;
+   if (viewport->hold_events)
+     event->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
+}
+
 /* Called when the viewport is realized */
 static Etk_Bool _etk_viewport_realized_cb(Etk_Object *object, void *data)
 {
@@ -186,8 +242,13 @@
       evas_object_show(viewport->clip);
    }
    viewport->event = evas_object_rectangle_add(evas);
+   evas_object_event_callback_add(viewport->event, EVAS_CALLBACK_MOUSE_DOWN, 
_etk_viewport_mouse_down_cb, viewport);
+   evas_object_event_callback_add(viewport->event, EVAS_CALLBACK_MOUSE_UP, 
_etk_viewport_mouse_up_cb, viewport);
+   evas_object_event_callback_add(viewport->event, EVAS_CALLBACK_MOUSE_MOVE, 
_etk_viewport_mouse_move_cb, viewport);
    etk_widget_member_object_add(ETK_WIDGET(viewport), viewport->event);
    evas_object_color_set(viewport->event, 0, 0, 0, 0);
+   evas_object_repeat_events_set(viewport->event, 1);
+   evas_object_raise(viewport->event);
    evas_object_show(viewport->event);
 
    return ETK_TRUE;
@@ -203,6 +264,7 @@
 
    etk_widget_clip_set(ETK_WIDGET(child), viewport->clip);
    evas_object_show(viewport->clip);
+   evas_object_raise(viewport->event);
    return ETK_TRUE;
 }
 
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_viewport.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- etk_viewport.h      19 Jun 2008 10:53:58 -0000      1.6
+++ etk_viewport.h      30 Jun 2008 05:53:49 -0000      1.7
@@ -34,10 +34,13 @@
 
    Evas_Object *clip, *event;
    int xscroll, yscroll;
+   Etk_Bool hold_events;
 };
 
 Etk_Type   *etk_viewport_type_get(void);
 Etk_Widget *etk_viewport_new(void);
+void        etk_viewport_hold_events_set(Etk_Viewport *viewport, Etk_Bool 
hold_events);
+Etk_Bool    etk_viewport_hold_events_get(Etk_Viewport *viewport);
 
 /** @} */
 
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_widget.c,v
retrieving revision 1.132
retrieving revision 1.133
diff -u -3 -r1.132 -r1.133
--- etk_widget.c        26 Jun 2008 06:03:49 -0000      1.132
+++ etk_widget.c        30 Jun 2008 05:53:49 -0000      1.133
@@ -2338,7 +2338,8 @@
       etk_signal_emit(ETK_WIDGET_MOUSE_UP_SIGNAL, ETK_OBJECT(widget), &event);
 
       if (ETK_INSIDE(event.canvas.x, event.canvas.y,
-            widget->geometry.x, widget->geometry.y, widget->geometry.w, 
widget->geometry.h))
+            widget->geometry.x, widget->geometry.y, widget->geometry.w, 
widget->geometry.h) &&
+         (!(event.modifiers & ETK_MODIFIER_ON_HOLD)))
       {
          etk_signal_emit(ETK_WIDGET_MOUSE_CLICK_SIGNAL, ETK_OBJECT(widget), 
&event);
       }



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to