... by adding 3 callbacks to viewport->event and connecting
them back to the original callbacks.
Signed-off-by: John Lee <[EMAIL PROTECTED]>
---
etk/src/lib/etk_scrolled_view.c | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/etk/src/lib/etk_scrolled_view.c b/etk/src/lib/etk_scrolled_view.c
index 5ae9e07..613dda3 100644
--- a/etk/src/lib/etk_scrolled_view.c
+++ b/etk/src/lib/etk_scrolled_view.c
@@ -71,6 +71,9 @@ static Etk_Bool _etk_scrolled_view_mouse_up(Etk_Object
*object, Etk_Event_Mouse_
static Etk_Bool _etk_scrolled_view_mouse_click(Etk_Object *object,
Etk_Event_Mouse_Up *event, void *data);
static Etk_Bool _etk_scrolled_view_mouse_move(Etk_Object *object,
Etk_Event_Mouse_Move *event, void *data);
static Etk_Bool _etk_scrolled_view_bar_mouse_down(Etk_Object *object,
Etk_Event_Mouse_Down *event, void *data);
+static void _etk_evas_scrolled_view_mouse_down(void *object, Evas *e,
Evas_Object *evas_obj, void *evas_event);
+static void _etk_evas_scrolled_view_mouse_up(void *object, Evas *e,
Evas_Object *evas_obj, void *evas_event);
+static void _etk_evas_scrolled_view_mouse_move(void *object, Evas *e,
Evas_Object *evas_obj, void *evas_event);
/**************************
*
* Implementation
@@ -165,6 +168,7 @@ Etk_Range
*etk_scrolled_view_vscrollbar_get(Etk_Scrolled_View *scrolled_view)
void etk_scrolled_view_add_with_viewport(Etk_Scrolled_View *scrolled_view,
Etk_Widget *child)
{
Etk_Widget *viewport;
+ Evas_Object *evas_obj;
if (!scrolled_view || !child)
return;
@@ -179,6 +183,10 @@ void etk_scrolled_view_add_with_viewport(Etk_Scrolled_View
*scrolled_view, Etk_W
etk_widget_show(viewport);
}
+ evas_obj = ETK_VIEWPORT(viewport)->event;
+ evas_object_event_callback_add(evas_obj, EVAS_CALLBACK_MOUSE_DOWN,
_etk_evas_scrolled_view_mouse_down, scrolled_view);
+ evas_object_event_callback_add(evas_obj, EVAS_CALLBACK_MOUSE_UP,
_etk_evas_scrolled_view_mouse_up, scrolled_view);
+ evas_object_event_callback_add(evas_obj, EVAS_CALLBACK_MOUSE_MOVE,
_etk_evas_scrolled_view_mouse_move, scrolled_view);
etk_container_add(ETK_CONTAINER(viewport), child);
scrolled_view->viewport = viewport;
}
@@ -887,6 +895,16 @@ static Etk_Bool _etk_scrolled_view_key_down_cb(Etk_Object
*object, Etk_Event_Key
return propagate;
}
+/* a wrapper to the real _etk_scrolled_view_mouse_down */
+static void _etk_evas_scrolled_view_mouse_down(void *object, Evas *e,
Evas_Object *evas_obj, void *evas_event)
+{
+ Etk_Event_Mouse_Down event;
+ Etk_Scrolled_View *scrolled_view = ETK_SCROLLED_VIEW(object);
+ etk_event_mouse_down_wrap(ETK_WIDGET(scrolled_view), (Evas_Event_Mouse_Down
*) evas_event, &event);
+ _etk_scrolled_view_mouse_down(ETK_OBJECT(scrolled_view), &event,
&scrolled_view->drag);
+ return;
+}
+
/* Called when mouse button has been pressed down */
static Etk_Bool _etk_scrolled_view_mouse_down(Etk_Object *object,
Etk_Event_Mouse_Down *event, void *data)
{
@@ -923,6 +941,16 @@ static Etk_Bool _etk_scrolled_view_mouse_down(Etk_Object
*object, Etk_Event_Mous
return ETK_FALSE;
}
+/* a wrapper to the real _etk_scrolled_view_mouse_move */
+static void _etk_evas_scrolled_view_mouse_move(void *object, Evas *e,
Evas_Object *evas_obj, void *evas_event)
+{
+ Etk_Event_Mouse_Move event;
+ Etk_Scrolled_View *scrolled_view = ETK_SCROLLED_VIEW(object);
+ etk_event_mouse_move_wrap(ETK_WIDGET(scrolled_view), (Evas_Event_Mouse_Move
*) evas_event, &event);
+ _etk_scrolled_view_mouse_move(ETK_OBJECT(scrolled_view), &event,
&scrolled_view->drag);
+ return;
+}
+
/* Called when mouse is dragging */
static Etk_Bool _etk_scrolled_view_mouse_move(Etk_Object *object,
Etk_Event_Mouse_Move *event, void *data)
{
@@ -1019,6 +1047,16 @@ static Etk_Bool _etk_scrolled_view_mouse_move(Etk_Object
*object, Etk_Event_Mous
return ETK_FALSE;
}
+/* a wrapper to the real _etk_scrolled_view_mouse_up */
+static void _etk_evas_scrolled_view_mouse_up(void *object, Evas *e,
Evas_Object *evas_obj, void *evas_event)
+{
+ Etk_Event_Mouse_Up event;
+ Etk_Scrolled_View *scrolled_view = ETK_SCROLLED_VIEW(object);
+ etk_event_mouse_up_wrap(ETK_WIDGET(scrolled_view), (Evas_Event_Mouse_Up *)
evas_event, &event);
+ _etk_scrolled_view_mouse_up(ETK_OBJECT(scrolled_view), &event,
&scrolled_view->drag);
+ return;
+}
+
/* Called when mouse button has been released */
static Etk_Bool _etk_scrolled_view_mouse_up(Etk_Object *object,
Etk_Event_Mouse_Up *event, void *data)
{
--
1.5.6.5
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel