diff options
author | Hosang Kim <hosang12.kim@samsung.com> | 2020-01-23 09:03:08 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2020-01-23 09:34:37 -0500 |
commit | 0e2778f0ca7cee9b167513852e6d505d42684430 (patch) | |
tree | 1bbfbf586ab18f16ec25ea5c01fc5177c828a8b0 | |
parent | 932ea7a70e41035273e75077142ba2b706d59a16 (diff) | |
download | efl-0e2778f0ca7cee9b167513852e6d505d42684430.tar.gz |
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
-rw-r--r-- | src/lib/elementary/efl_ui_layout.c | 33 |
1 files 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); |