diff options
author | Daniel Hirt <daniel.hirt@samsung.com> | 2015-11-30 15:29:06 +0200 |
---|---|---|
committer | Daniel Hirt <daniel.hirt@samsung.com> | 2015-11-30 17:01:51 +0200 |
commit | 90cc853ae6ff82e36422ba4240357a06a7bbce38 (patch) | |
tree | 4816343fec79885079eca9a73a0675fed65f8f7e | |
parent | cb735449c700b5ad62089a9b48d680b62ac38605 (diff) | |
download | elementary-90cc853ae6ff82e36422ba4240357a06a7bbce38.tar.gz |
Entry: add markup cnp handlers
In Elm_Cnp, a markup data preparer was missing, which resulted
in _x11_notify_handler_targets not requesting
"application/x-elementary-markup" (requested "UTF8_STRING" instead) when
trying to paste markup text from one entry to another (or itself).
Also, there was a missing handling in the selection data callback for
ELM_SEL_FORMAT_MARKUP data format.
This fixes issues like not being able to paste "item" formats to the
entry widget.
@fix
-rw-r--r-- | src/lib/elm_cnp.c | 13 | ||||
-rw-r--r-- | src/lib/elm_entry.c | 4 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/lib/elm_cnp.c b/src/lib/elm_cnp.c index fb3f2ae86..070105746 100644 --- a/src/lib/elm_cnp.c +++ b/src/lib/elm_cnp.c @@ -218,6 +218,7 @@ static Eina_Bool _x11_vcard_send (char *target, void *data, i static Eina_Bool _x11_is_uri_type_data (X11_Cnp_Selection *sel EINA_UNUSED, Ecore_X_Event_Selection_Notify *notify); static Eina_Bool _x11_notify_handler_targets (X11_Cnp_Selection *sel, Ecore_X_Event_Selection_Notify *notify); static Eina_Bool _x11_data_preparer_text (Ecore_X_Event_Selection_Notify *notify, Elm_Selection_Data *ddata, Tmp_Info **tmp_info); +static Eina_Bool _x11_data_preparer_markup (Ecore_X_Event_Selection_Notify *notify, Elm_Selection_Data *ddata, Tmp_Info **tmp_info); static Eina_Bool _x11_data_preparer_image (Ecore_X_Event_Selection_Notify *notify, Elm_Selection_Data *ddata, Tmp_Info **tmp_info); static Eina_Bool _x11_data_preparer_uri (Ecore_X_Event_Selection_Notify *notify, Elm_Selection_Data *ddata, Tmp_Info **tmp_info); //static int _x11_notify_handler_html (X11_Cnp_Selection *sel, Ecore_X_Event_Selection_Notify *notify); @@ -451,6 +452,7 @@ static Cnp_Atom _atoms[CNP_N_ATOMS] = { .formats = ELM_SEL_FORMAT_MARKUP, #ifdef HAVE_ELEMENTARY_X .x_converter = _x11_general_converter, + .x_data_preparer = _x11_data_preparer_markup, #endif }, ARRAYINIT(CNP_ATOM_text_urilist) { @@ -956,6 +958,17 @@ _x11_data_preparer_text(Ecore_X_Event_Selection_Notify *notify, return EINA_TRUE; } +static Eina_Bool +_x11_data_preparer_markup(Ecore_X_Event_Selection_Notify *notify, + Elm_Selection_Data *ddata, Tmp_Info **tmp_info EINA_UNUSED) +{ + Ecore_X_Selection_Data *data = notify->data; + ddata->format = ELM_SEL_FORMAT_MARKUP; + ddata->data = eina_memdup(data->data, data->length, EINA_TRUE); + ddata->len = data->length; + return EINA_TRUE; +} + /** * So someone is pasting an image into my entry or widget... */ diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c index 5cf77a521..a8f263d56 100644 --- a/src/lib/elm_entry.c +++ b/src/lib/elm_entry.c @@ -673,6 +673,10 @@ _selection_data_cb(void *data EINA_UNUSED, snprintf(entry_tag, len + 1, tag_string, buf); _edje_entry_user_insert(obj, entry_tag); } + else if (sel_data->format & ELM_SEL_FORMAT_MARKUP) + { + _edje_entry_user_insert(obj, buf); + } else { char *txt = _elm_util_text_to_mkup(buf); |