From b351ead33a268bed2ee5a52cae1c5b59f77c88d8 Mon Sep 17 00:00:00 2001 From: sebastid Date: Sat, 8 Oct 2005 14:38:15 +0000 Subject: [PATCH] Move dnd stuff to ecore_x_dnd.c, and set default action to copy. It works!!! SVN revision: 17323 --- legacy/ecore/src/lib/ecore_x/ecore_x.c | 65 ----------------- legacy/ecore/src/lib/ecore_x/ecore_x_dnd.c | 69 ++++++++++++++++++- legacy/ecore/src/lib/ecore_x/ecore_x_events.c | 22 +++--- 3 files changed, 77 insertions(+), 79 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x.c b/legacy/ecore/src/lib/ecore_x/ecore_x.c index 1137d017b1..21eb9999e7 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x.c @@ -62,32 +62,6 @@ Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_PRIMARY = 0; Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_SECONDARY = 0; Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD = 0; -Ecore_X_Atom ECORE_X_ATOM_SELECTION_XDND = 0; -Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_XDND = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_AWARE = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_ENTER = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_TYPE_LIST = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_POSITION = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_COPY = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_MOVE = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_LINK = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_PRIVATE = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_ASK = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_LIST = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_DESCRIPTION = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_PROXY = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_STATUS = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_DROP = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_FINISHED = 0; -Ecore_X_Atom ECORE_X_ATOM_XDND_LEAVE = 0; - -/* Xdnd atoms that need to be exposed to the application interface */ -Ecore_X_Atom ECORE_X_DND_ACTION_COPY = 0; -Ecore_X_Atom ECORE_X_DND_ACTION_MOVE = 0; -Ecore_X_Atom ECORE_X_DND_ACTION_LINK = 0; -Ecore_X_Atom ECORE_X_DND_ACTION_ASK = 0; -Ecore_X_Atom ECORE_X_DND_ACTION_PRIVATE = 0; - int ECORE_X_EVENT_KEY_DOWN = 0; int ECORE_X_EVENT_KEY_UP = 0; int ECORE_X_EVENT_MOUSE_BUTTON_DOWN = 0; @@ -147,13 +121,6 @@ int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW = 0; int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE = 0; int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE = 0; -int ECORE_X_EVENT_XDND_ENTER = 0; -int ECORE_X_EVENT_XDND_POSITION = 0; -int ECORE_X_EVENT_XDND_STATUS = 0; -int ECORE_X_EVENT_XDND_LEAVE = 0; -int ECORE_X_EVENT_XDND_DROP = 0; -int ECORE_X_EVENT_XDND_FINISHED = 0; - int ECORE_X_MODIFIER_SHIFT = 0; int ECORE_X_MODIFIER_CTRL = 0; int ECORE_X_MODIFIER_ALT = 0; @@ -339,13 +306,6 @@ ecore_x_init(const char *name) ECORE_X_EVENT_STARTUP_SEQUENCE_NEW = ecore_event_type_new(); ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE = ecore_event_type_new(); ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE = ecore_event_type_new(); - - ECORE_X_EVENT_XDND_ENTER = ecore_event_type_new(); - ECORE_X_EVENT_XDND_POSITION = ecore_event_type_new(); - ECORE_X_EVENT_XDND_STATUS = ecore_event_type_new(); - ECORE_X_EVENT_XDND_LEAVE = ecore_event_type_new(); - ECORE_X_EVENT_XDND_DROP = ecore_event_type_new(); - ECORE_X_EVENT_XDND_FINISHED = ecore_event_type_new(); } /* everything has these... unless its like a pda... :) */ @@ -413,31 +373,6 @@ ecore_x_init(const char *name) ECORE_X_ATOM_SELECTION_PROP_PRIMARY = XInternAtom(_ecore_x_disp, "_ECORE_SELECTION_PRIMARY", False); ECORE_X_ATOM_SELECTION_PROP_SECONDARY = XInternAtom(_ecore_x_disp, "_ECORE_SELECTION_SECONDARY", False); ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD = XInternAtom(_ecore_x_disp, "_ECORE_SELECTION_CLIPBOARD", False); - ECORE_X_ATOM_SELECTION_PROP_XDND = XInternAtom(_ecore_x_disp, "JXSelectionWindowProperty", False); - ECORE_X_ATOM_SELECTION_XDND = XInternAtom(_ecore_x_disp, "XdndSelection", False); - ECORE_X_ATOM_XDND_AWARE = XInternAtom(_ecore_x_disp, "XdndAware", False); - ECORE_X_ATOM_XDND_TYPE_LIST = XInternAtom(_ecore_x_disp, "XdndTypeList", False); - ECORE_X_ATOM_XDND_ENTER = XInternAtom(_ecore_x_disp, "XdndEnter", False); - ECORE_X_ATOM_XDND_POSITION = XInternAtom(_ecore_x_disp, "XdndPosition", False); - ECORE_X_ATOM_XDND_ACTION_COPY = XInternAtom(_ecore_x_disp, "XdndActionCopy", False); - ECORE_X_ATOM_XDND_ACTION_MOVE = XInternAtom(_ecore_x_disp, "XdndActionMove", False); - ECORE_X_ATOM_XDND_ACTION_PRIVATE = XInternAtom(_ecore_x_disp, "XdndActionPrivate", False); - ECORE_X_ATOM_XDND_ACTION_ASK = XInternAtom(_ecore_x_disp, "XdndActionAsk", False); - ECORE_X_ATOM_XDND_ACTION_LIST = XInternAtom(_ecore_x_disp, "XdndActionList", False); - ECORE_X_ATOM_XDND_ACTION_LINK = XInternAtom(_ecore_x_disp, "XdndActionLink", False); - ECORE_X_ATOM_XDND_ACTION_DESCRIPTION = XInternAtom(_ecore_x_disp, "XdndActionDescription", False); - ECORE_X_ATOM_XDND_PROXY = XInternAtom(_ecore_x_disp, "XdndProxy", False); - ECORE_X_ATOM_XDND_STATUS = XInternAtom(_ecore_x_disp, "XdndStatus", False); - ECORE_X_ATOM_XDND_LEAVE = XInternAtom(_ecore_x_disp, "XdndLeave", False); - ECORE_X_ATOM_XDND_DROP = XInternAtom(_ecore_x_disp, "XdndDrop", False); - ECORE_X_ATOM_XDND_FINISHED = XInternAtom(_ecore_x_disp, "XdndFinished", False); - - /* Initialize the globally defined xdnd atoms */ - ECORE_X_DND_ACTION_COPY = ECORE_X_ATOM_XDND_ACTION_COPY; - ECORE_X_DND_ACTION_MOVE = ECORE_X_ATOM_XDND_ACTION_MOVE; - ECORE_X_DND_ACTION_LINK = ECORE_X_ATOM_XDND_ACTION_LINK; - ECORE_X_DND_ACTION_ASK = ECORE_X_ATOM_XDND_ACTION_ASK; - ECORE_X_DND_ACTION_PRIVATE = ECORE_X_ATOM_XDND_ACTION_PRIVATE; _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] = ECORE_X_ATOM_WM_DELETE_WINDOW; _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] = ECORE_X_ATOM_WM_TAKE_FOCUS; diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_dnd.c b/legacy/ecore/src/lib/ecore_x/ecore_x_dnd.c index 012d22af17..dded8e6e12 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_dnd.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_dnd.c @@ -6,6 +6,39 @@ #include "Ecore_X.h" #include "Ecore_X_Atoms.h" +Ecore_X_Atom ECORE_X_ATOM_SELECTION_XDND = 0; +Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_XDND = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_AWARE = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_ENTER = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_TYPE_LIST = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_POSITION = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_COPY = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_MOVE = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_LINK = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_PRIVATE = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_ASK = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_LIST = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_DESCRIPTION = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_PROXY = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_STATUS = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_DROP = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_FINISHED = 0; +Ecore_X_Atom ECORE_X_ATOM_XDND_LEAVE = 0; + +/* Xdnd atoms that need to be exposed to the application interface */ +Ecore_X_Atom ECORE_X_DND_ACTION_COPY = 0; +Ecore_X_Atom ECORE_X_DND_ACTION_MOVE = 0; +Ecore_X_Atom ECORE_X_DND_ACTION_LINK = 0; +Ecore_X_Atom ECORE_X_DND_ACTION_ASK = 0; +Ecore_X_Atom ECORE_X_DND_ACTION_PRIVATE = 0; + +int ECORE_X_EVENT_XDND_ENTER = 0; +int ECORE_X_EVENT_XDND_POSITION = 0; +int ECORE_X_EVENT_XDND_STATUS = 0; +int ECORE_X_EVENT_XDND_LEAVE = 0; +int ECORE_X_EVENT_XDND_DROP = 0; +int ECORE_X_EVENT_XDND_FINISHED = 0; + static Ecore_X_DND_Source *_source = NULL; static Ecore_X_DND_Target *_target = NULL; static int _ecore_x_dnd_init_count = 0; @@ -25,6 +58,39 @@ _ecore_x_dnd_init(void) _target->win = None; _target->source = None; _target->state = ECORE_X_DND_TARGET_IDLE; + + ECORE_X_EVENT_XDND_ENTER = ecore_event_type_new(); + ECORE_X_EVENT_XDND_POSITION = ecore_event_type_new(); + ECORE_X_EVENT_XDND_STATUS = ecore_event_type_new(); + ECORE_X_EVENT_XDND_LEAVE = ecore_event_type_new(); + ECORE_X_EVENT_XDND_DROP = ecore_event_type_new(); + ECORE_X_EVENT_XDND_FINISHED = ecore_event_type_new(); + + ECORE_X_ATOM_SELECTION_PROP_XDND = XInternAtom(_ecore_x_disp, "JXSelectionWindowProperty", False); + ECORE_X_ATOM_SELECTION_XDND = XInternAtom(_ecore_x_disp, "XdndSelection", False); + ECORE_X_ATOM_XDND_AWARE = XInternAtom(_ecore_x_disp, "XdndAware", False); + ECORE_X_ATOM_XDND_TYPE_LIST = XInternAtom(_ecore_x_disp, "XdndTypeList", False); + ECORE_X_ATOM_XDND_ENTER = XInternAtom(_ecore_x_disp, "XdndEnter", False); + ECORE_X_ATOM_XDND_POSITION = XInternAtom(_ecore_x_disp, "XdndPosition", False); + ECORE_X_ATOM_XDND_ACTION_COPY = XInternAtom(_ecore_x_disp, "XdndActionCopy", False); + ECORE_X_ATOM_XDND_ACTION_MOVE = XInternAtom(_ecore_x_disp, "XdndActionMove", False); + ECORE_X_ATOM_XDND_ACTION_PRIVATE = XInternAtom(_ecore_x_disp, "XdndActionPrivate", False); + ECORE_X_ATOM_XDND_ACTION_ASK = XInternAtom(_ecore_x_disp, "XdndActionAsk", False); + ECORE_X_ATOM_XDND_ACTION_LIST = XInternAtom(_ecore_x_disp, "XdndActionList", False); + ECORE_X_ATOM_XDND_ACTION_LINK = XInternAtom(_ecore_x_disp, "XdndActionLink", False); + ECORE_X_ATOM_XDND_ACTION_DESCRIPTION = XInternAtom(_ecore_x_disp, "XdndActionDescription", False); + ECORE_X_ATOM_XDND_PROXY = XInternAtom(_ecore_x_disp, "XdndProxy", False); + ECORE_X_ATOM_XDND_STATUS = XInternAtom(_ecore_x_disp, "XdndStatus", False); + ECORE_X_ATOM_XDND_LEAVE = XInternAtom(_ecore_x_disp, "XdndLeave", False); + ECORE_X_ATOM_XDND_DROP = XInternAtom(_ecore_x_disp, "XdndDrop", False); + ECORE_X_ATOM_XDND_FINISHED = XInternAtom(_ecore_x_disp, "XdndFinished", False); + + /* Initialize the globally defined xdnd atoms */ + ECORE_X_DND_ACTION_COPY = ECORE_X_ATOM_XDND_ACTION_COPY; + ECORE_X_DND_ACTION_MOVE = ECORE_X_ATOM_XDND_ACTION_MOVE; + ECORE_X_DND_ACTION_LINK = ECORE_X_ATOM_XDND_ACTION_LINK; + ECORE_X_DND_ACTION_ASK = ECORE_X_ATOM_XDND_ACTION_ASK; + ECORE_X_DND_ACTION_PRIVATE = ECORE_X_ATOM_XDND_ACTION_PRIVATE; } _ecore_x_dnd_init_count++; @@ -211,12 +277,11 @@ ecore_x_dnd_begin(Ecore_X_Window source, unsigned char *data, int size) _source->win = source; ecore_x_window_ignore_set(_source->win, 1); - printf("source: 0x%x\n", source); _source->state = ECORE_X_DND_SOURCE_DRAGGING; _source->time = _ecore_x_event_last_time; /* Default Accepted Action: ask */ - _source->action = ECORE_X_ATOM_XDND_ACTION_ASK; + _source->action = ECORE_X_ATOM_XDND_ACTION_COPY; _source->accepted_action = None; return 1; } diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_events.c b/legacy/ecore/src/lib/ecore_x/ecore_x_events.c index 3f834bef48..9bdc57d444 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_events.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_events.c @@ -1295,8 +1295,8 @@ _ecore_x_event_handle_client_message(XEvent *xevent) Ecore_X_DND_Target *target; target = _ecore_x_dnd_target_get(); - if ((target->source != xevent->xclient.data.l[0]) - || (target->win != xevent->xclient.window)) + if ((target->source != xevent->xclient.data.l[0]) || + (target->win != xevent->xclient.window)) return; target->pos.x = xevent->xclient.data.l[2] >> 16; @@ -1324,8 +1324,8 @@ _ecore_x_event_handle_client_message(XEvent *xevent) source = _ecore_x_dnd_source_get(); /* Make sure source/target match */ - if ((source->win != xevent->xclient.window ) - || (source->dest != (Window)xevent->xclient.data.l[0])) + if ((source->win != xevent->xclient.window ) || + (source->dest != (Window)xevent->xclient.data.l[0])) return; source->await_status = 0; @@ -1362,8 +1362,8 @@ _ecore_x_event_handle_client_message(XEvent *xevent) Ecore_X_DND_Target *target; target = _ecore_x_dnd_target_get(); - if ((target->source != xevent->xclient.data.l[0]) - || (target->win != xevent->xclient.window)) + if ((target->source != xevent->xclient.data.l[0]) || + (target->win != xevent->xclient.window)) return; target->state = ECORE_X_DND_TARGET_IDLE; @@ -1383,8 +1383,8 @@ _ecore_x_event_handle_client_message(XEvent *xevent) target = _ecore_x_dnd_target_get(); /* Match source/target */ - if ((target->source != (Window)xevent->xclient.data.l[0]) - || (target->win != xevent->xclient.window)) + if ((target->source != (Window)xevent->xclient.data.l[0]) || + (target->win != xevent->xclient.window)) return; target->time = (target->version >= 1) ? @@ -1409,8 +1409,8 @@ _ecore_x_event_handle_client_message(XEvent *xevent) source = _ecore_x_dnd_source_get(); /* Match source/target */ - if ((source->win != xevent->xclient.window) - || (source->dest != (Window)xevent->xclient.data.l[0])) + if ((source->win != xevent->xclient.window) || + (source->dest != (Window)xevent->xclient.data.l[0])) return; if ((source->version >= 5) && (xevent->xclient.data.l[1] & 0x1UL)) @@ -1540,13 +1540,11 @@ _ecore_x_event_handle_client_message(XEvent *xevent) else if ((xevent->xclient.message_type == ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN) && (xevent->xclient.format == 8)) { - printf("new startup info\n"); _ecore_x_netwm_startup_info_begin(xevent->xclient.window, xevent->xclient.data.b); } else if ((xevent->xclient.message_type == ECORE_X_ATOM_NET_STARTUP_INFO) && (xevent->xclient.format == 8)) { - printf("startup info\n"); _ecore_x_netwm_startup_info(xevent->xclient.window, xevent->xclient.data.b); } else if ((xevent->xclient.message_type == 27777)