zmike pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0e2778f0ca7cee9b167513852e6d505d42684430

commit 0e2778f0ca7cee9b167513852e6d505d42684430
Author: Hosang Kim <hosang12....@samsung.com>
Date:   Thu Jan 23 09:03:08 2020 -0500

    efl_ui_layout: send theme signal when style is already updated.
    
    Summary:
    If you run below code, text is invisible.
    
    ```
    efl_add(EFL_UI_BUTTON_CLASS, box,
            efl_ui_widget_style_set(efl_added, "anchor"),
            efl_text_set(efl_added, "anchor style"),
            efl_pack_end(box, efl_added));
    ```
    
    But below code is working well.
    ```
    efl_add(EFL_UI_BUTTON_CLASS, box,
            efl_text_set(efl_added, "anchor style"),
            efl_ui_widget_style_set(efl_added, "anchor"),
            efl_pack_end(box, efl_added));
    ```
    
    Test Plan: run  efl_ui_theme_example_01
    
    Reviewers: zmike
    
    Reviewed By: zmike
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D11118
---
 src/lib/elementary/efl_ui_layout.c | 33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/src/lib/elementary/efl_ui_layout.c 
b/src/lib/elementary/efl_ui_layout.c
index 9ab1ab3a4a..3b6c50ba2a 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -551,6 +551,23 @@ _efl_ui_layout_theme_internal(Eo *obj, Efl_Ui_Layout_Data 
*sd, Elm_Widget_Smart_
    return ret;
 }
 
+static void
+_deferred_signals_emit(Efl_Ui_Layout_Data *pd)
+{
+   do
+     {
+        Deferred_Version_Signal *dvs = eina_inarray_pop(pd->deferred_signals);
+
+        if (pd->version < dvs->version_threshold)
+          efl_layout_signal_emit(pd->obj, dvs->old_sig, "efl");
+        else
+          efl_layout_signal_emit(pd->obj, dvs->new_sig, "efl");
+        eina_stringshare_del(dvs->old_sig);
+        eina_stringshare_del(dvs->new_sig);
+     } while (eina_inarray_count(pd->deferred_signals));
+   ELM_SAFE_FREE(pd->deferred_signals, eina_inarray_free);
+}
+
 EOLIAN static Eina_Error
 _efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
 {
@@ -603,20 +620,8 @@ _efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, 
Efl_Ui_Layout_Data *sd)
           }
      }
    if (sd->deferred_signals)
-     {
-        do
-          {
-             Deferred_Version_Signal *dvs = 
eina_inarray_pop(sd->deferred_signals);
+     _deferred_signals_emit(sd);
 
-             if (sd->version < dvs->version_threshold)
-               efl_layout_signal_emit(sd->obj, dvs->old_sig, "efl");
-             else
-               efl_layout_signal_emit(sd->obj, dvs->new_sig, "efl");
-             eina_stringshare_del(dvs->old_sig);
-             eina_stringshare_del(dvs->new_sig);
-          } while (eina_inarray_count(sd->deferred_signals));
-        ELM_SAFE_FREE(sd->deferred_signals, eina_inarray_free);
-     }
    if (!version)
      {
         snprintf(buf, sizeof(buf), "%d%d", EFL_VERSION_MAJOR, 
EFL_VERSION_MINOR + (EFL_VERSION_MICRO == 99 ? 1 : 0));
@@ -2730,6 +2735,8 @@ _efl_ui_layout_base_efl_object_finalize(Eo *obj, 
Efl_Ui_Layout_Data *pd)
         /* handle case where subclass does not call into layout */
         pd->needs_theme_apply = EINA_FALSE;
      }
+   else if (pd->deferred_signals)
+     _deferred_signals_emit(pd);
    efl_canvas_group_change(obj);
 
    Elm_Layout_Data *ld = efl_data_scope_safe_get(obj, ELM_LAYOUT_MIXIN);

-- 


Reply via email to