Efl_Selection_Data sel_data;
sel_data.pos.x = sel_data.pos.y = 0;
- sel_data.format = sel->format;
- sel_data.content.mem = ev->data;
- sel_data.content.len = ev->len;
+ if (((sel->format & EFL_SELECTION_FORMAT_MARKUP) ||
+ (sel->format & EFL_SELECTION_FORMAT_HTML)) &&
+ (sel->want_format == EFL_SELECTION_FORMAT_TEXT))
+ {
+ char *tmp = malloc(ev->len + 1);
+ sel_data.format = sel->format;
+ sel_data.content.mem = NULL;
+ sel_data.content.len = 0;
+ if (tmp)
+ {
+ sel_data.format = sel->want_format;
+ strncpy(tmp, ev->data, ev->len);
+ tmp[ev->len] = 0;
+ sel_data.content.mem = _elm_util_mkup_to_text(tmp);
+ if (sel_data.content.mem)
+ sel_data.content.len = strlen(sel_data.content.mem);
+ free(tmp);
+ }
+ }
+ else
+ {
+ sel_data.format = sel->format;
+ sel_data.content.mem = ev->data;
+ sel_data.content.len = ev->len;
+ }
sel_data.action = _wl_to_elm(ecore_wl2_offer_action_get(sel->sel_offer));
sel->data_func(sel->data_func_data,
sel->request_obj,
for (i = 0; sm_wl_convertion[i].translates; i++)
{
int j = 0;
- if (!(format & sm_wl_convertion[i].format)) continue;
+// if (!(format & sm_wl_convertion[i].format)) continue;
for (j = 0; sm_wl_convertion[i].translates[j]; j++)
{
//we have found matching mimetypes
sel->sel_offer = offer;
sel->format = sm_wl_convertion[i].format;
+ sel->want_format = format;
sel_debug("request type: %s", (char *)sm_wl_convertion[i].translates[j]);
evas_object_event_callback_add(sel->request_obj, EVAS_CALLBACK_DEL,
Ecore_Win32_Window *win;
#endif
+ Efl_Selection_Format want_format;
Efl_Selection_Format format;
Efl_Selection_Action action;
Eina_Bool active : 1;
char *sm_wl_image[] = {"image/", "text/uri-list", NULL};
Sel_Manager_Wl_Format_Translation sm_wl_convertion[] = {
- {EFL_SELECTION_FORMAT_MARKUP, sm_wl_markup},
+ {EFL_SELECTION_FORMAT_MARKUP | EFL_SELECTION_FORMAT_TEXT, sm_wl_markup},
{EFL_SELECTION_FORMAT_TEXT, sm_wl_text},
{EFL_SELECTION_FORMAT_HTML, sm_wl_html},
{EFL_SELECTION_FORMAT_VCARD, sm_wl_vcard},
*******/
}
-static inline Eina_Bool
-_entry_win_is_wl(Evas_Object *obj)
-{
- Evas_Object *win = _entry_win_get(obj);
- /* primary selection does not exist (yet) */
- return win && elm_win_wl_window_get(win);
-}
+// XXX: still try primary selection even if on wl in case it's
+// supported
+//static inline Eina_Bool
+//_entry_win_is_wl(Evas_Object *obj)
+//{
+// Evas_Object *win = _entry_win_get(obj);
+// /* primary selection does not exist (yet) */
+// return win && elm_win_wl_window_get(win);
+//}
static void
_entry_selection_changed_signal_cb(void *data,
{
ELM_ENTRY_DATA_GET(data, sd);
- if(!sd) return;
+ if (!sd) return EINA_FALSE;
+ sd->sel_change_timeout = NULL;
sd->have_selection = EINA_TRUE;
efl_event_callback_legacy_call
(data, EFL_UI_EVENT_SELECTION_CHANGED, NULL);
- if (!_entry_win_is_wl(data))
+ // XXX: still try primary selection even if on wl in case it's
+ // supported
+// if (!_entry_win_is_wl(data))
_selection_store(ELM_SEL_TYPE_PRIMARY, data);
_update_selection_handler(data);
if (_elm_atspi_enabled())
sd->have_selection = EINA_FALSE;
efl_event_callback_legacy_call
(data, EFL_UI_EVENT_SELECTION_CLEARED, NULL);
- if (!_entry_win_is_wl(data))
+ // XXX: still try primary selection even if on wl in case it's
+ // supported
+// if (!_entry_win_is_wl(data))
{
if (sd->cut_sel)
{
/*************************************************************
* TIZEN_ONLY_FEATURE : Tizen Copy & Paste feature with CBHM *
*************************************************************/
- else
- {
- /* When primary type does not exist */
- if (sd->cut_sel)
- {
- elm_cnp_selection_loss_callback_set(data, ELM_SEL_TYPE_PRIMARY, _selection_clear, data);
-
- ELM_SAFE_FREE(sd->cut_sel, eina_stringshare_del);
- }
- else if (!sd->drag_started)
- {
- elm_object_cnp_selection_clear(data, ELM_SEL_TYPE_PRIMARY);
- }
- }
+// else
+// {
+// /* When primary type does not exist */
+// if (sd->cut_sel)
+// {
+// elm_cnp_selection_loss_callback_set(data, ELM_SEL_TYPE_PRIMARY, _selection_clear, data);
+//
+// ELM_SAFE_FREE(sd->cut_sel, eina_stringshare_del);
+// }
+// else if (!sd->drag_started)
+// {
+// elm_object_cnp_selection_clear(data, ELM_SEL_TYPE_PRIMARY);
+// }
+// }
/*******
* END *
*******/
ELM_SEL_TYPE_PRIMARY : ELM_SEL_TYPE_CLIPBOARD;
if (!sd->editable) return;
- if ((type == ELM_SEL_TYPE_PRIMARY) && _entry_win_is_wl(data)) return;
+ // XXX: still try primary selection even if on wl in case it's
+ // supported
+// if ((type == ELM_SEL_TYPE_PRIMARY) && _entry_win_is_wl(data)) return;
efl_event_callback_legacy_call
(data, EFL_UI_EVENT_SELECTION_PASTE, NULL);