diff options
author | Sungtaek Hong <sth253.hong@samsung.com> | 2017-11-24 14:32:36 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2017-11-24 14:32:36 +0900 |
commit | 8f2369c5b6b756619f23cc96f312e4e97030ab7c (patch) | |
tree | fee7dce27d655ec35c6776473b6f789a752eb382 | |
parent | 56abebf236d93a39547771f4bf6e0dae5abc575b (diff) | |
download | efl-8f2369c5b6b756619f23cc96f312e4e97030ab7c.tar.gz |
efl_ui_widget: secure elm_legacy_add flag
Summary:
_elm_legacy_add goes back to EINA_FALSE after setting sd->legacy.
if constructor get called again after going back to EINA_FALSE,
sd->legacy should remain EINA_TRUE.
also, elm_legacy_add() should not be called non-elm_widget.
Test Plan:
Run elementary test->Efl.Ui.Text.Label.
Check legacy flag in _elm_theme_object_set() for efl_ui_win.
Check legacy flag for efl_ui_text after scrollable text is added.
Reviewers: jpeg, woohyun
Reviewed By: jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5529
-rw-r--r-- | src/lib/elementary/elm_interface_scrollable.c | 2 | ||||
-rw-r--r-- | src/lib/elementary/elm_widget.c | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/elementary/elm_interface_scrollable.c b/src/lib/elementary/elm_interface_scrollable.c index 8f1371f027..522deba236 100644 --- a/src/lib/elementary/elm_interface_scrollable.c +++ b/src/lib/elementary/elm_interface_scrollable.c @@ -192,7 +192,7 @@ _elm_pan_content_size_get(Eo *obj EINA_UNUSED, Elm_Pan_Smart_Data *psd, Evas_Coo static Evas_Object * _elm_pan_add(Evas *evas) { - return elm_legacy_add(MY_PAN_CLASS, evas); + return efl_add(MY_PAN_CLASS, evas, efl_canvas_object_legacy_ctor(efl_added)); } EOLIAN static Eo * diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 3b122a9b84..5531bb7a87 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -5046,8 +5046,11 @@ _elm_widget_efl_object_constructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSE Eo *parent = NULL; sd->on_create = EINA_TRUE; - sd->legacy = _elm_legacy_add; - _elm_legacy_add = EINA_FALSE; + if (_elm_legacy_add) + { + sd->legacy = _elm_legacy_add; + _elm_legacy_add = EINA_FALSE; + } efl_canvas_group_clipped_set(obj, EINA_FALSE); obj = efl_constructor(efl_super(obj, MY_CLASS)); efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY); |