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