efl_ui_text: emit EFL_UI_TEXT_EVENT_CHANGED events properly
authorMike Blumenkrantz <zmike@samsung.com>
Thu, 7 Feb 2019 11:41:52 +0000 (12:41 +0100)
committerWooHyun Jung <wh0705.jung@samsung.com>
Mon, 11 Feb 2019 01:37:25 +0000 (10:37 +0900)
Summary:
these should be emitted any time text is changed in the object

fix T7615, T7417, T6978, T6979
Depends on D7883

Reviewers: bu5hm4n, cedric, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: #reviewers, #committers

Tags: #efl_widgets

Maniphest Tasks: T7615, T7417, T6979, T6978

Differential Revision: https://phab.enlightenment.org/D7884

src/lib/elementary/efl_ui_internal_text_interactive.c
src/lib/elementary/efl_ui_text.c

index 7975cb5..70571a9 100644 (file)
@@ -607,6 +607,7 @@ _range_del_emit(Evas_Object *obj, Efl_Text_Cursor_Cursor *cur1, Efl_Text_Cursor_
    evas_textblock_cursor_range_delete(cur1, cur2);
 
    efl_event_callback_call(obj, EFL_UI_TEXT_EVENT_CHANGED_USER, &info);
+   efl_event_callback_call(obj, EFL_UI_TEXT_EVENT_CHANGED, NULL);
    if (tmp) free(tmp);
 }
 
@@ -637,6 +638,7 @@ _delete_emit(Eo *obj, Evas_Textblock_Cursor *c, Efl_Ui_Internal_Text_Interactive
    evas_textblock_cursor_char_delete(c);
 
    efl_event_callback_call(obj, EFL_UI_TEXT_EVENT_CHANGED_USER, &info);
+   efl_event_callback_call(obj, EFL_UI_TEXT_EVENT_CHANGED, NULL);
    if (tmp) free(tmp);
 }
 
@@ -1061,6 +1063,8 @@ end:
    if (changed_user)
      {
         efl_event_callback_call(obj, EFL_UI_TEXT_EVENT_CHANGED_USER, &info);
+        /* FIXME: this is kinda gross */
+        efl_event_callback_call(obj, EFL_UI_TEXT_EVENT_CHANGED, NULL);
      }
    (void) 0;
 }
index 5f96f34..3be9664 100644 (file)
@@ -2120,6 +2120,7 @@ _efl_ui_text_efl_object_constructor(Eo *obj, Efl_Ui_Text_Data *sd)
    elm_widget_sub_object_parent_add(obj);
 
    text_obj = efl_add(EFL_UI_INTERNAL_TEXT_INTERACTIVE_CLASS, obj);
+   efl_event_callback_forwarder_add(text_obj, EFL_UI_TEXT_EVENT_CHANGED, obj);
    sd->text_obj = text_obj;
    sd->text_guide_obj = efl_add(EFL_CANVAS_TEXT_CLASS, obj);
    sd->text_table = efl_add(EFL_UI_TABLE_CLASS, obj);
@@ -3892,13 +3893,14 @@ _decoration_defer_all(Eo *obj)
 }
 
 static void
-_efl_ui_text_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
+_efl_ui_text_changed_cb(void *data, const Efl_Event *event)
 {
    if (efl_invalidated_get(event->object)) return;
    EFL_UI_TEXT_DATA_GET(data, sd);
    sd->text_changed = EINA_TRUE;
    sd->cursor_update = EINA_TRUE;
    _update_guide_text(data, sd);
+   efl_event_callback_call(event->object, EFL_UI_TEXT_EVENT_CHANGED, NULL);
    elm_layout_sizing_eval(data);
    _decoration_defer(data);
 }