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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs