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