#include #include #include #include #include #include Evas_Object *obj; Ecore_X_Window win; int pos = 0; int exit_handler(void *data, int type, void *event) { ecore_main_loop_quit(); return 1; } int enter_handler(void *data, int type, void *event) { printf("enter\n"); return 1; } int leave_handler(void *data, int type, void *event) { printf("leave\n"); return 1; } int status_handler(void *data, int type, void *event) { printf("status\n"); return 1; } int position_handler(void *data, int type, void *event) { /* printf("position\n"); */ return 1; } int drop_handler(void *data, int type, void *event) { printf("drop\n"); return 1; } int finished_handler(void *data, int type, void *event) { printf("finished\n"); return 1; } void drag_start(void *data, Evas *e, Evas_Object *obj, void *event_info) { char *text = "Dette er en test"; printf("drag_start\n"); ecore_x_dnd_type_set(win, "text/plain", 1); ecore_x_dnd_begin(win, text, strlen(text) * sizeof(char)); } void drag_end(void *data, Evas *e, Evas_Object *obj, void *event_info) { printf("drag_end\n"); ecore_x_dnd_drop(); } int main(int argc, char **argv) { Ecore_Evas *ee; int w, h; ecore_init(); ecore_evas_init(); edje_init(); ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 10, 10); ecore_evas_borderless_set(ee, 1); ecore_evas_layer_set(ee, 999); ecore_evas_show(ee); win = ecore_evas_software_x11_window_get(ee); ecore_x_dnd_aware_set(win, 1); obj = edje_object_add(ecore_evas_get(ee)); edje_object_file_set(obj, "default.edj", "drag"); w = 400; h = 400; evas_object_move(obj, 0, 0); evas_object_resize(obj, w, h); evas_object_show(obj); ecore_evas_move(ee, 20, 20); ecore_evas_resize(ee, w, h); ecore_evas_show(ee); ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, exit_handler, NULL); ecore_event_handler_add(ECORE_X_EVENT_XDND_ENTER, enter_handler, NULL); ecore_event_handler_add(ECORE_X_EVENT_XDND_LEAVE, leave_handler, NULL); ecore_event_handler_add(ECORE_X_EVENT_XDND_STATUS, status_handler, NULL); ecore_event_handler_add(ECORE_X_EVENT_XDND_POSITION, position_handler, NULL); ecore_event_handler_add(ECORE_X_EVENT_XDND_DROP, drop_handler, NULL); ecore_event_handler_add(ECORE_X_EVENT_XDND_FINISHED, finished_handler, NULL); evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN, drag_start, NULL); evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP, drag_end, NULL); ecore_main_loop_begin(); edje_shutdown(); ecore_evas_shutdown(); ecore_shutdown(); return 0; }