herdsman pushed a commit to branch elementary-1.16.

http://git.enlightenment.org/core/elementary.git/commit/?id=90cc853ae6ff82e36422ba4240357a06a7bbce38

commit 90cc853ae6ff82e36422ba4240357a06a7bbce38
Author: Daniel Hirt <daniel.h...@samsung.com>
Date:   Mon Nov 30 15:29:06 2015 +0200

    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
---
 src/lib/elm_cnp.c   | 13 +++++++++++++
 src/lib/elm_entry.c |  4 ++++
 2 files changed, 17 insertions(+)

diff --git a/src/lib/elm_cnp.c b/src/lib/elm_cnp.c
index fb3f2ae..0701057 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 5cf77a5..a8f263d 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);

-- 


Reply via email to