Enlightenment CVS committal

Author  : ningerso
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_dnd.c ewl_embed.c ewl_engines.c ewl_engines.h ewl_widget.c 


Log Message:
Update to ecore_x selection request structure change.
Add support for data request handling.
Update DND test to support sending DND drop results.

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_dnd.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -3 -r1.37 -r1.38
--- ewl_dnd.c   5 Dec 2006 14:50:41 -0000       1.37
+++ ewl_dnd.c   11 Dec 2006 23:16:50 -0000      1.38
@@ -351,8 +351,6 @@
        ewl_attach_mouse_argb_cursor_set(emb, ewl_dnd_default_cursor);
        ewl_embed_mouse_cursor_set(EWL_WIDGET(emb));
 
-       printf("Began drag process on %p\n", w);
-
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
@@ -381,7 +379,6 @@
         */
        // ewl_embed_mouse_cursor_set(EWL_WIDGET(emb));
 
-       printf("Finished drag process on %p\n", w);
        ewl_engine_embed_dnd_drag_drop(emb);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.c,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -3 -r1.98 -r1.99
--- ewl_embed.c 7 Dec 2006 19:13:14 -0000       1.98
+++ ewl_embed.c 11 Dec 2006 23:16:50 -0000      1.99
@@ -729,8 +729,6 @@
        if (check && ewl_object_state_has(check, EWL_FLAG_STATE_DND))
                ewl_callback_call_with_event_data(EWL_WIDGET(check),
                                                  EWL_CALLBACK_MOUSE_MOVE, &ev);
-       else
-               embed->last.drag_widget = NULL;
 
        check = EWL_OBJECT(embed->last.clicked);
        if (check && ewl_object_state_has(check, EWL_FLAG_STATE_PRESSED))
@@ -809,7 +807,7 @@
                                ev.data = NULL;
                        }
 
-                       embed->last.drag_widget = widget;
+                       embed->last.drop_widget = widget;
                        parent = widget;
                        while (parent) {
                                ewl_callback_call_with_event_data(parent,
@@ -1055,7 +1053,6 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_TYPE("embed", embed, EWL_EMBED_TYPE);
-
        /*
         * If a widget is expecting DND data, send the data to the widget
         */
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_engines.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- ewl_engines.c       4 Dec 2006 05:19:15 -0000       1.25
+++ ewl_engines.c       11 Dec 2006 23:16:50 -0000      1.26
@@ -870,6 +870,34 @@
 
 /**
  * @param embed: the embed to work with
+ * @return Returns no value
+ * @brief Sends dnd data to the drop recipient
+ */
+int
+ewl_engine_embed_dnd_drag_data_send(Ewl_Embed *embed, void *handle, void *data,
+                                   int size)
+{
+       Ewl_Engine_Cb_Window_Dnd_Drag_Data_Send embed_dnd_drag_data_send;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("embed", embed, FALSE);
+       DCHECK_TYPE_RET("embed", embed, EWL_EMBED_TYPE, FALSE);
+
+       if (!(embed->evas_window))
+               DRETURN_INT(FALSE, DLEVEL_STABLE);
+
+       embed_dnd_drag_data_send = ewl_engine_hook_get(EWL_EMBED(embed),
+                                       EWL_ENGINE_HOOK_TYPE_WINDOW,
+                                       EWL_ENGINE_WINDOW_DND_DRAG_DATA_SEND);
+       if (embed_dnd_drag_data_send)
+               DRETURN_INT(embed_dnd_drag_data_send(embed, handle, data, size),
+                               DLEVEL_STABLE);
+
+       DRETURN_INT(FALSE, DLEVEL_STABLE);
+}
+
+/**
+ * @param embed: the embed to work with
  * @param w: a pointer where the width of the desktop will be stored
  * @param h: a pointer where the height pf the desktop will be stored
  * @return Returns no value
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_engines.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ewl_engines.h       6 Dec 2006 20:14:52 -0000       1.17
+++ ewl_engines.h       11 Dec 2006 23:16:50 -0000      1.18
@@ -43,6 +43,7 @@
        EWL_ENGINE_WINDOW_DND_DRAG_TYPES_SET, /**< Set window drag types */
        EWL_ENGINE_WINDOW_DND_DRAG_START, /**< Begin DND drag process */
        EWL_ENGINE_WINDOW_DND_DRAG_DROP, /**< Complete DND drag process */
+       EWL_ENGINE_WINDOW_DND_DRAG_DATA_SEND, /**< Send data after request */
 
        EWL_ENGINE_WINDOW_MAX
 };
@@ -183,6 +184,10 @@
                                                        unsigned int num);
 void            ewl_engine_embed_dnd_drag_start(Ewl_Embed *embed);
 void            ewl_engine_embed_dnd_drag_drop(Ewl_Embed *embed);
+int              ewl_engine_embed_dnd_drag_data_send(Ewl_Embed *embed,
+                                                       void *handle,
+                                                       void *data,
+                                                       int size);
 void            ewl_engine_desktop_size_get(Ewl_Embed *embed, int *w, int *h);
 
 void            ewl_engine_canvas_setup(Ewl_Window *win, int debug);
@@ -241,6 +246,7 @@
 typedef void (*Ewl_Engine_Cb_Window_Dnd_Drag_Types_Set)(Ewl_Embed *embed, char 
**types, unsigned int num);      /**< Set the drag types */
 typedef void (*Ewl_Engine_Cb_Window_Dnd_Drag_Start)(Ewl_Embed *embed);  /**< 
Start the drag process */
 typedef void (*Ewl_Engine_Cb_Window_Dnd_Drag_Drop)(Ewl_Embed *embed);   /**< 
End the drag process with a drop event */
+typedef int (*Ewl_Engine_Cb_Window_Dnd_Drag_Data_Send)(Ewl_Embed *embed, void 
*handle, void *data, int size);   /**< Send the drag data */
 typedef void (*Ewl_Engine_Cb_Window_Desktop_Size_Get)(Ewl_Embed *embed, 
                                                        int *w, int *h); /**< 
Get the desktop
                                                                size */
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_widget.c,v
retrieving revision 1.108
retrieving revision 1.109
diff -u -3 -r1.108 -r1.109
--- ewl_widget.c        29 Nov 2006 15:52:19 -0000      1.108
+++ ewl_widget.c        11 Dec 2006 23:16:50 -0000      1.109
@@ -2386,8 +2386,6 @@
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
-       /* printf("Obscuring %s\n", w->appearance); */
-
        emb = ewl_embed_widget_find(w);
        if (!emb)
                DRETURN(DLEVEL_STABLE);
@@ -2929,6 +2927,7 @@
 ewl_widget_cb_mouse_move(Ewl_Widget *w, void *ev_data __UNUSED__,
                                void *user_data __UNUSED__)
 {
+       Ewl_Embed *embed;
        Ewl_Object *o;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
@@ -2942,9 +2941,11 @@
                        ewl_object_flags_has(o, EWL_FLAG_PROPERTY_DND_SOURCE,
                                EWL_FLAGS_PROPERTY_MASK)) {
                if (!ewl_object_state_has(o, EWL_FLAG_STATE_DND)) {
+                       embed = ewl_embed_widget_find(w);
                        ewl_object_state_add(o, EWL_FLAG_STATE_DND);
+                       embed->last.drag_widget = w;
                        /* FIXME: Start DND here. */
-                       ewl_dnd_drag_start(EWL_WIDGET(o));
+                       ewl_dnd_drag_start(w);
                }
        }
 



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to