fix dnd source visibility when dragging into a link drop target

ticket #1953


SVN revision: 80586
This commit is contained in:
Mike Blumenkrantz 2012-12-10 08:59:36 +00:00
parent 842d077dcb
commit 06897e960b
1 changed files with 6 additions and 9 deletions

View File

@ -6410,7 +6410,7 @@ _e_fm2_cb_dnd_selection_notify(void *data, const char *type, void *event)
char *args = NULL; char *args = NULL;
size_t size = 0; size_t size = 0;
size_t length = 0; size_t length = 0;
Eina_Bool memerr = EINA_FALSE; Eina_Bool lnk = EINA_FALSE, memerr = EINA_FALSE;
sd = data; sd = data;
ev = event; ev = event;
@ -6432,6 +6432,7 @@ _e_fm2_cb_dnd_selection_notify(void *data, const char *type, void *event)
{ {
if ((e_drop_handler_action_get() == ECORE_X_ATOM_XDND_ACTION_MOVE) || (sd->config->view.link_drop)) if ((e_drop_handler_action_get() == ECORE_X_ATOM_XDND_ACTION_MOVE) || (sd->config->view.link_drop))
{ {
lnk = EINA_TRUE;
if (_e_fm2_view_mode_get(sd) != E_FM2_VIEW_MODE_CUSTOM_ICONS) if (_e_fm2_view_mode_get(sd) != E_FM2_VIEW_MODE_CUSTOM_ICONS)
goto end; goto end;
memerr = EINA_TRUE; // prevent actual file move op memerr = EINA_TRUE; // prevent actual file move op
@ -6445,11 +6446,6 @@ _e_fm2_cb_dnd_selection_notify(void *data, const char *type, void *event)
EINA_LIST_FOREACH(isel, l, ic) EINA_LIST_FOREACH(isel, l, ic)
{ {
if (!ic) continue; if (!ic) continue;
if (ic->drag.dnd_end_timer)
{
ecore_timer_del(ic->drag.dnd_end_timer);
ic->drag.dnd_end_timer = NULL;
}
if (ic->drag.src) if (ic->drag.src)
{ {
ox = ic->x; ox = ic->x;
@ -6638,6 +6634,7 @@ _e_fm2_cb_dnd_selection_notify(void *data, const char *type, void *event)
{ {
if (e_drop_handler_action_get() == ECORE_X_ATOM_XDND_ACTION_COPY) if (e_drop_handler_action_get() == ECORE_X_ATOM_XDND_ACTION_COPY)
{ {
lnk = EINA_TRUE;
if (sd->config->view.link_drop && (!sd->drop_icon)) if (sd->config->view.link_drop && (!sd->drop_icon))
e_fm2_client_file_symlink(sd->obj, args); e_fm2_client_file_symlink(sd->obj, args);
else else
@ -6647,7 +6644,7 @@ _e_fm2_cb_dnd_selection_notify(void *data, const char *type, void *event)
else if (e_drop_handler_action_get() == ECORE_X_ATOM_XDND_ACTION_MOVE) else if (e_drop_handler_action_get() == ECORE_X_ATOM_XDND_ACTION_MOVE)
{ {
if (sd->config->view.link_drop && (!sd->drop_icon)) if (sd->config->view.link_drop && (!sd->drop_icon))
e_fm2_client_file_symlink(sd->obj, args); lnk = EINA_TRUE, e_fm2_client_file_symlink(sd->obj, args);
else else
e_fm2_client_file_move(sd->obj, args); e_fm2_client_file_move(sd->obj, args);
free(args); free(args);
@ -6655,7 +6652,7 @@ _e_fm2_cb_dnd_selection_notify(void *data, const char *type, void *event)
else if (e_drop_handler_action_get() == ECORE_X_ATOM_XDND_ACTION_ASK) else if (e_drop_handler_action_get() == ECORE_X_ATOM_XDND_ACTION_ASK)
{ {
if (sd->config->view.link_drop && (!sd->drop_icon)) if (sd->config->view.link_drop && (!sd->drop_icon))
e_fm2_client_file_symlink(sd->obj, args); lnk = EINA_TRUE, e_fm2_client_file_symlink(sd->obj, args);
else else
e_fm2_drop_menu(sd->obj, args); e_fm2_drop_menu(sd->obj, args);
} }
@ -6680,7 +6677,7 @@ end:
} }
eina_list_free(fsel); eina_list_free(fsel);
EINA_LIST_FREE(isel, ic) EINA_LIST_FREE(isel, ic)
if (ic->drag.dnd_end_timer) if (ic->drag.dnd_end_timer && (!lnk))
{ {
ecore_timer_del(ic->drag.dnd_end_timer); ecore_timer_del(ic->drag.dnd_end_timer);
ic->drag.dnd_end_timer = NULL; ic->drag.dnd_end_timer = NULL;