Elm entry: Added changed,user signal.
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 3 Aug 2011 09:00:36 +0000 (09:00 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 3 Aug 2011 09:00:36 +0000 (09:00 +0000)
This signal indicates the entry was changed because of user interaction

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@62045 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

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

index 0872ea3..67e9226 100644 (file)
@@ -8256,6 +8256,7 @@ extern "C" {
     * This widget emits the following signals:
     *
     * @li "changed": The text within the entry was changed.
+    * @li "changed,user": The text within the entry was changed because of user interaction.
     * @li "activated": The enter key was pressed on a single line entry.
     * @li "press": A mouse button has been pressed on the entry.
     * @li "longpressed": A mouse button has been pressed and held for a couple
index 77b3969..47f172f 100644 (file)
@@ -750,7 +750,7 @@ notify_handler_text(Cnp_Selection *sel, Ecore_X_Event_Selection_Notify *notify)
    cnp_debug("Notify handler text %d %d %p\n", data->format,data->length, data->data);
    str = mark_up((char *)data->data, data->length, NULL);
    cnp_debug("String is %s (from %s)\n", str, data->data);
-   elm_entry_entry_insert(sel->requestwidget, str);
+   _elm_entry_entry_paste(sel->requestwidget, str);
    free(str);
    return 0;
 }
@@ -936,7 +936,7 @@ notify_handler_html(Cnp_Selection *sel, Ecore_X_Event_Selection_Notify *notify)
    strncpy(stripstr, (char *)data->data, data->length);
    stripstr[data->length] = '\0';
    cnp_debug("String is %s (%d bytes)\n", stripstr, data->length);
-   elm_entry_entry_insert(sel->requestwidget, stripstr);
+   _elm_entry_entry_paste(sel->requestwidget, stripstr);
    free(stripstr);
    return 0;
 }
@@ -1023,7 +1023,7 @@ pasteimage_append(char *file, Evas_Object *entry)
 
    entrytag = alloca(len + 1);
    snprintf(entrytag, len + 1, tagstring, file);
-   elm_entry_entry_insert(entry, entrytag);
+   _elm_entry_entry_paste(entry, entrytag);
 
    return EINA_TRUE;
 }
index 7637c22..851c202 100644 (file)
@@ -118,6 +118,7 @@ static void _signal_cursor_changed(void *data, Evas_Object *obj, const char *emi
 static void _add_chars_till_limit(Evas_Object *obj, char **text, int can_add, Length_Unit unit);
 
 static const char SIG_CHANGED[] = "changed";
+static const char SIG_CHANGED_USER[] = "changed,user";
 static const char SIG_ACTIVATED[] = "activated";
 static const char SIG_PRESS[] = "press";
 static const char SIG_LONGPRESSED[] = "longpressed";
@@ -162,6 +163,7 @@ static const Evas_Smart_Cb_Description _signals[] = {
        {SIG_ANCHOR_IN, ""},
        {SIG_ANCHOR_OUT, ""},
        {SIG_PREEDIT_CHANGED, ""},
+       {SIG_CHANGED_USER, ""},
        {NULL, NULL}
 };
 
@@ -924,6 +926,13 @@ _select(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
      elm_widget_scroll_hold_push(data);
 }
 
+void
+_elm_entry_entry_paste(Evas_Object *obj, const char *entry)
+{
+   elm_entry_entry_insert(obj, entry);
+   evas_object_smart_callback_call(obj, SIG_CHANGED_USER, NULL);
+}
+
 static void
 _paste(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
@@ -1284,6 +1293,12 @@ _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);
+}
+
+static void
 _signal_preedit_changed(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
 {
    _entry_changed_common_handling(data, SIG_PREEDIT_CHANGED);
@@ -2001,6 +2016,8 @@ elm_entry_add(Evas_Object *parent)
    _elm_theme_object_set(obj, wd->ent, "entry", "base", "default");
    edje_object_signal_callback_add(wd->ent, "entry,changed", "elm.text",
                                    _signal_entry_changed, obj);
+   edje_object_signal_callback_add(wd->ent, "entry,changed,user", "elm.text",
+                                   _signal_entry_changed_user, obj);
    edje_object_signal_callback_add(wd->ent, "preedit,changed", "elm.text",
                                    _signal_preedit_changed, obj);
    edje_object_signal_callback_add(wd->ent, "selection,start", "elm.text",
index 3411b8f..d5570ef 100644 (file)
@@ -237,4 +237,7 @@ extern int          _elm_log_dom;
 extern Eina_List   *_elm_win_list;
 extern int          _elm_win_deferred_free;
 
+/* Used by the paste handler */
+void _elm_entry_entry_paste(Evas_Object *obj, const char *entry);
+
 #endif