Elm entry: Pass Elm_Entry_Change_Info with changed,user signal.
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 14 Nov 2011 13:56:02 +0000 (13:56 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 14 Nov 2011 13:56:02 +0000 (13:56 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@65168 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/Elementary.h.in
src/lib/elm_entry.c

index 2560288..c146151 100644 (file)
@@ -10952,6 +10952,14 @@ extern "C" {
    typedef void (*Elm_Entry_Filter_Cb)(void *data, Evas_Object *entry, char **text);
 
    /**
+    * @typedef Elm_Entry_Change_Info
+    * This corresponds to Edje_Entry_Change_Info. Includes information about
+    * a change in the entry.
+    */
+   typedef Edje_Entry_Change_Info Elm_Entry_Change_Info;
+
+
+   /**
     * This adds an entry to @p parent object.
     *
     * By default, entries are:
index b68a6ad..48b5b1d 100644 (file)
@@ -1081,8 +1081,18 @@ _select(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 void
 _elm_entry_entry_paste(Evas_Object *obj, const char *entry)
 {
+   Elm_Entry_Change_Info info;
+   info.insert = EINA_TRUE;
+   info.change.insert.pos = elm_entry_cursor_pos_get(obj);
+   info.change.insert.content = eina_stringshare_add(entry);
+   /* FIXME: VERY BAD! Breaks with utf8 and formats! */
+   info.change.insert.plain_length =
+      eina_stringshare_strlen(info.change.insert.content);
+
    elm_entry_entry_insert(obj, entry);
-   evas_object_smart_callback_call(obj, SIG_CHANGED_USER, NULL);
+   evas_object_smart_callback_call(obj, SIG_CHANGED_USER, &info);
+
+   eina_stringshare_del(info.change.insert.content);
 }
 
 static void
@@ -1451,7 +1461,18 @@ _signal_entry_changed(void *data, Evas_Object *obj __UNUSED__, const char *emiss
 static void
 _signal_entry_changed_user(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
 {
-   evas_object_smart_callback_call(data, SIG_CHANGED_USER, NULL);
+   Elm_Entry_Change_Info info;
+   Edje_Entry_Change_Info *edje_info = (Edje_Entry_Change_Info *)
+      edje_object_signal_callback_extra_data_get();
+   if (edje_info)
+     {
+        memcpy(&info, edje_info, sizeof(info));
+        evas_object_smart_callback_call(data, SIG_CHANGED_USER, &info);
+     }
+   else
+     {
+        evas_object_smart_callback_call(data, SIG_CHANGED_USER, NULL);
+     }
 }
 
 static void