elm_cnp: use local cnp when elm_cnp owns the selection
no need to use protocol to send an app's own selection to itself
This commit is contained in:
parent
fe48334c59
commit
f052a2c02f
|
@ -201,6 +201,10 @@ static Eina_Bool _local_elm_drop_target_del(Evas_Object *obj, Elm_Sel_Format fo
|
||||||
|
|
||||||
static Tmp_Info *_tempfile_new (int size);
|
static Tmp_Info *_tempfile_new (int size);
|
||||||
static int _tmpinfo_free (Tmp_Info *tmp);
|
static int _tmpinfo_free (Tmp_Info *tmp);
|
||||||
|
|
||||||
|
static Eina_Bool _local_elm_cnp_selection_get(const Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Format format, Elm_Drop_Cb datacb, void *udata);
|
||||||
|
static Eina_Bool _local_elm_object_cnp_selection_clear(Evas_Object *obj, Elm_Sel_Type selection);
|
||||||
|
static Eina_Bool _local_elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Format format, const void *selbuf, size_t buflen);
|
||||||
#ifdef HAVE_ELEMENTARY_X
|
#ifdef HAVE_ELEMENTARY_X
|
||||||
static Ecore_X_Window _x11_elm_widget_xwin_get(const Evas_Object *obj);
|
static Ecore_X_Window _x11_elm_widget_xwin_get(const Evas_Object *obj);
|
||||||
|
|
||||||
|
@ -2011,7 +2015,7 @@ _x11_elm_cnp_selection_set(Ecore_X_Window xwin, Evas_Object *obj, Elm_Sel_Type s
|
||||||
sel->selbuf = strdup((char*)selbuf);
|
sel->selbuf = strdup((char*)selbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
return EINA_TRUE;
|
return _local_elm_cnp_selection_set(obj, selection, format, selbuf, buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2052,7 +2056,7 @@ _x11_elm_object_cnp_selection_clear(Evas_Object *obj, Elm_Sel_Type selection)
|
||||||
ELM_SAFE_FREE(sel->selbuf, free);
|
ELM_SAFE_FREE(sel->selbuf, free);
|
||||||
sel->clear();
|
sel->clear();
|
||||||
|
|
||||||
return EINA_TRUE;
|
return _local_elm_object_cnp_selection_clear(obj, selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
@ -2065,6 +2069,8 @@ _x11_elm_cnp_selection_get(Ecore_X_Window xwin, const Evas_Object *obj, Elm_Sel_
|
||||||
_x11_elm_cnp_init();
|
_x11_elm_cnp_init();
|
||||||
|
|
||||||
sel = _x11_selections + selection;
|
sel = _x11_selections + selection;
|
||||||
|
if (sel->active)
|
||||||
|
return _local_elm_cnp_selection_get(obj, selection, format, datacb, udata);
|
||||||
|
|
||||||
if (sel->requestwidget)
|
if (sel->requestwidget)
|
||||||
evas_object_event_callback_del_full(sel->requestwidget, EVAS_CALLBACK_DEL,
|
evas_object_event_callback_del_full(sel->requestwidget, EVAS_CALLBACK_DEL,
|
||||||
|
@ -3002,7 +3008,7 @@ _wl_elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Form
|
||||||
sel->selection_serial = ecore_wl2_dnd_selection_set(_wl_default_seat_get(win, obj), types);
|
sel->selection_serial = ecore_wl2_dnd_selection_set(_wl_default_seat_get(win, obj), types);
|
||||||
|
|
||||||
free(types);
|
free(types);
|
||||||
return EINA_TRUE;
|
return _local_elm_cnp_selection_set(obj, selection, format, selbuf, buflen);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3118,12 +3124,16 @@ _wl_elm_cnp_selection_get(const Evas_Object *obj, Elm_Sel_Type selection, Elm_Se
|
||||||
Ecore_Wl2_Input *input;
|
Ecore_Wl2_Input *input;
|
||||||
Ecore_Wl2_Offer *offer;
|
Ecore_Wl2_Offer *offer;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
//Wl_Cnp_Selection *sel = &wl_cnp_selection;
|
||||||
|
|
||||||
_wl_elm_cnp_init();
|
_wl_elm_cnp_init();
|
||||||
|
|
||||||
win = _wl_elm_widget_window_get(obj);
|
|
||||||
|
|
||||||
if (selection == ELM_SEL_TYPE_XDND) return EINA_FALSE;
|
if (selection == ELM_SEL_TYPE_XDND) return EINA_FALSE;
|
||||||
|
|
||||||
|
//if (sel->active)
|
||||||
|
//return _local_elm_cnp_selection_get(obj, selection, format, datacb, udata);
|
||||||
|
win = _wl_elm_widget_window_get(obj);
|
||||||
|
|
||||||
input = _wl_default_seat_get(win, (void*)obj);
|
input = _wl_default_seat_get(win, (void*)obj);
|
||||||
offer = ecore_wl2_dnd_selection_get(input);
|
offer = ecore_wl2_dnd_selection_get(input);
|
||||||
|
|
||||||
|
@ -3201,7 +3211,7 @@ _wl_elm_cnp_selection_clear(Evas_Object *obj, Elm_Sel_Type selection EINA_UNUSED
|
||||||
/* sel->clear(); */
|
/* sel->clear(); */
|
||||||
sel->selection_serial = ecore_wl2_dnd_selection_clear(_wl_default_seat_get(_wl_elm_widget_window_get(obj), obj));
|
sel->selection_serial = ecore_wl2_dnd_selection_clear(_wl_default_seat_get(_wl_elm_widget_window_get(obj), obj));
|
||||||
|
|
||||||
return EINA_TRUE;
|
return _local_elm_object_cnp_selection_clear(obj, selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue