From 7f05f79c9e1ed358829df0cef26a0a582c8bd24b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 7 Feb 2019 12:41:52 +0100 Subject: [PATCH] efl_ui_text: emit EFL_UI_TEXT_EVENT_CHANGED events properly 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 | 4 ++++ src/lib/elementary/efl_ui_text.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/efl_ui_internal_text_interactive.c b/src/lib/elementary/efl_ui_internal_text_interactive.c index 7975cb5..70571a9 100644 --- a/src/lib/elementary/efl_ui_internal_text_interactive.c +++ b/src/lib/elementary/efl_ui_internal_text_interactive.c @@ -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; } diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c index 5f96f34..3be9664 100644 --- a/src/lib/elementary/efl_ui_text.c +++ b/src/lib/elementary/efl_ui_text.c @@ -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); } -- 2.7.4