Move dnd stuff to ecore_x_dnd.c, and set default action to copy.

It works!!!


SVN revision: 17323
This commit is contained in:
sebastid 2005-10-08 14:38:15 +00:00 committed by sebastid
parent 2032d7e213
commit b351ead33a
3 changed files with 77 additions and 79 deletions

View File

@ -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;

View File

@ -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;
}

View File

@ -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)