forked from enlightenment/efl
CnP: improve loss callback
- Reset loss cb after invocation as it is no more needed - When selection is set, previous owner loss cb is invoked only if the new owner and the previous one are different.
This commit is contained in:
parent
434a133255
commit
185e88db91
|
@ -706,9 +706,10 @@ _x11_selection_clear(void *udata EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||||
_x11_sel_obj_del2, sel);
|
_x11_sel_obj_del2, sel);
|
||||||
sel->widget = NULL;
|
sel->widget = NULL;
|
||||||
sel->requestwidget = NULL;
|
sel->requestwidget = NULL;
|
||||||
|
sel->loss_cb = NULL;
|
||||||
|
sel->loss_data = NULL;
|
||||||
|
|
||||||
sel->active = EINA_FALSE;
|
sel->active = EINA_FALSE;
|
||||||
sel->widget = NULL;
|
|
||||||
ELM_SAFE_FREE(sel->selbuf, free);
|
ELM_SAFE_FREE(sel->selbuf, free);
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
@ -1852,7 +1853,7 @@ _x11_elm_cnp_selection_set(Ecore_X_Window xwin, Evas_Object *obj, Elm_Sel_Type s
|
||||||
return elm_object_cnp_selection_clear(obj, selection);
|
return elm_object_cnp_selection_clear(obj, selection);
|
||||||
|
|
||||||
sel = _x11_selections + selection;
|
sel = _x11_selections + selection;
|
||||||
if (sel->loss_cb) sel->loss_cb(sel->loss_data, selection);
|
if (sel->widget != obj && sel->loss_cb) sel->loss_cb(sel->loss_data, selection);
|
||||||
if (sel->widget)
|
if (sel->widget)
|
||||||
evas_object_event_callback_del_full(sel->widget, EVAS_CALLBACK_DEL,
|
evas_object_event_callback_del_full(sel->widget, EVAS_CALLBACK_DEL,
|
||||||
_x11_sel_obj_del, sel);
|
_x11_sel_obj_del, sel);
|
||||||
|
|
Loading…
Reference in New Issue