forked from enlightenment/efl
Move dnd stuff to ecore_x_dnd.c, and set default action to copy.
It works!!! SVN revision: 17323
This commit is contained in:
parent
2032d7e213
commit
b351ead33a
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue