Enlightenment CVS committal

Author  : ningerso
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/engines/x11


Modified Files:
        Ewl_Engine_X11.h ewl_engine_x11.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/engines/x11/Ewl_Engine_X11.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Ewl_Engine_X11.h    9 Jun 2006 19:33:14 -0000       1.1
+++ Ewl_Engine_X11.h    11 Dec 2006 23:16:50 -0000      1.2
@@ -2,6 +2,8 @@
 #define EWL_ENGINE_X11_H
 
 #include <Ewl.h>
+#include <Ecore_X.h>
+#include <Ecore_X_Atoms.h>
 
 #define EWL_ENGINE_X11(engine) ((Ewl_Engine_X11 *)engine)
 typedef struct Ewl_Engine_X11 Ewl_Engine_X11;
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/engines/x11/ewl_engine_x11.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- ewl_engine_x11.c    11 Dec 2006 06:23:08 -0000      1.30
+++ ewl_engine_x11.c    11 Dec 2006 23:16:50 -0000      1.31
@@ -78,6 +78,7 @@
 static void ee_dnd_drag_types_set(Ewl_Embed *embed, const char **types, 
unsigned int num);
 static void ee_dnd_drag_begin(Ewl_Embed *embed);
 static void ee_dnd_drag_drop(Ewl_Embed *embed);
+static int ee_dnd_drag_data_send(Ewl_Embed *embed, void *handle, void *data, 
int len);
 
 static int ee_pointer_data_new(Ewl_Embed *embed, int *data, int w, int h);
 static void ee_pointer_free(Ewl_Embed *embed, int pointer);
@@ -113,6 +114,7 @@
                ee_dnd_drag_types_set,
                ee_dnd_drag_begin,
                ee_dnd_drag_drop,
+               ee_dnd_drag_data_send,
        };
 
 static void *pointer_funcs[EWL_ENGINE_POINTER_MAX] =
@@ -763,8 +765,7 @@
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_TYPE("embed", embed, EWL_EMBED_TYPE);
 
-       ecore_x_dnd_begin((Ecore_X_Window)embed->evas_window, (void *)"dnd 
data",
-                       strlen("dnd data") + 1);
+       ecore_x_dnd_begin((Ecore_X_Window)embed->evas_window, NULL, 0);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -782,6 +783,24 @@
 }
 
 static int
+ee_dnd_drag_data_send(Ewl_Embed *embed, void *handle, void *data, int len)
+{
+       Ecore_X_Event_Selection_Request *request = handle;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("embed", embed, FALSE);
+       DCHECK_PARAM_PTR_RET("handle", handle, FALSE);
+       DCHECK_TYPE_RET("embed", embed, EWL_EMBED_TYPE, FALSE);
+
+       ecore_x_window_prop_property_set(request->requestor, request->property,
+                                        request->target, 8, data, len);
+
+       DRETURN_INT(ecore_x_selection_notify_send(request->requestor,
+                               request->selection, request->target,
+                               request->property), DLEVEL_STABLE);
+}
+
+static int
 ee_pointer_data_new(Ewl_Embed *embed, int *data, int w, int h)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
@@ -1242,13 +1261,17 @@
        ev = e;
 
        /* Handle everything *except* XDND selection */
-       if (ev->selection != ECORE_X_SELECTION_XDND)
-               printf("Data request event received\n");
+       if (ev->selection != ECORE_X_ATOM_SELECTION_XDND)
+               printf("Data request event received: %s not %s\n",
+                               XGetAtomName(ecore_x_display_get(),
+                                       ev->selection),
+                               XGetAtomName(ecore_x_display_get(),
+                                       ECORE_X_ATOM_SELECTION_XDND));
 
-       else if (ev->selection == ECORE_X_SELECTION_XDND)
+       else if (ev->selection == ECORE_X_ATOM_SELECTION_XDND)
        {
                Ewl_Embed *embed;
-               embed = ewl_embed_evas_window_find((void *)ev->win);
+               embed = ewl_embed_evas_window_find((void *)ev->owner);
                ewl_embed_dnd_data_request_feed(embed, ev,
                                XGetAtomName(ecore_x_display_get(),
                                        ev->target));



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