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

Reply via email to