forked from enlightenment/efl
ecore-wl2: isolate regular selection requests from dnd-specific code
fix T3455
This commit is contained in:
parent
262ac55287
commit
7da4d8a4ae
|
@ -151,7 +151,8 @@ data_source_event_emit(Ecore_Wl2_Input *input, int event)
|
||||||
ev->source = input->focus.keyboard->id;
|
ev->source = input->focus.keyboard->id;
|
||||||
|
|
||||||
if (!ev->win) ev->win = ev->source;
|
if (!ev->win) ev->win = ev->source;
|
||||||
ev->action = input->drag.source->dnd_action;
|
if (input->drag.source)
|
||||||
|
ev->action = input->drag.source->dnd_action;
|
||||||
|
|
||||||
ecore_event_add(event, ev, NULL, NULL);
|
ecore_event_add(event, ev, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
@ -161,9 +162,10 @@ data_source_cancelled(void *data, struct wl_data_source *source)
|
||||||
{
|
{
|
||||||
Ecore_Wl2_Input *input = data;
|
Ecore_Wl2_Input *input = data;
|
||||||
|
|
||||||
|
if (input->drag.source)
|
||||||
|
input->drag.source->dnd_action = 0;
|
||||||
if (input->data.source == source) input->data.source = NULL;
|
if (input->data.source == source) input->data.source = NULL;
|
||||||
wl_data_source_destroy(source);
|
wl_data_source_destroy(source);
|
||||||
input->drag.source->dnd_action = 0;
|
|
||||||
data_source_event_emit(input, ECORE_WL2_EVENT_DATA_SOURCE_END);
|
data_source_event_emit(input, ECORE_WL2_EVENT_DATA_SOURCE_END);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +191,8 @@ data_source_action(void *data, struct wl_data_source *source EINA_UNUSED, uint32
|
||||||
{
|
{
|
||||||
Ecore_Wl2_Input *input = data;
|
Ecore_Wl2_Input *input = data;
|
||||||
|
|
||||||
input->drag.source->dnd_action = dnd_action;
|
if (input->drag.source)
|
||||||
|
input->drag.source->dnd_action = dnd_action;
|
||||||
data_source_event_emit(input, ECORE_WL2_EVENT_DATA_SOURCE_ACTION);
|
data_source_event_emit(input, ECORE_WL2_EVENT_DATA_SOURCE_ACTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,9 +234,12 @@ _selection_data_read(void *data, Ecore_Fd_Handler *fdh)
|
||||||
|
|
||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
{
|
{
|
||||||
if (source->input->display->wl.data_device_manager_version >=
|
if (source->input->drag.source)
|
||||||
WL_DATA_OFFER_FINISH_SINCE_VERSION)
|
{
|
||||||
wl_data_offer_finish(source->offer);
|
if (source->input->display->wl.data_device_manager_version >=
|
||||||
|
WL_DATA_OFFER_FINISH_SINCE_VERSION)
|
||||||
|
wl_data_offer_finish(source->offer);
|
||||||
|
}
|
||||||
if (source->input->selection.source == source)
|
if (source->input->selection.source == source)
|
||||||
source->input->selection.source = NULL;
|
source->input->selection.source = NULL;
|
||||||
_ecore_wl2_dnd_del(source);
|
_ecore_wl2_dnd_del(source);
|
||||||
|
|
Loading…
Reference in New Issue