diff options
author | Marcel Hollerbach <marcel-hollerbach@t-online.de> | 2015-02-03 12:23:59 +0100 |
---|---|---|
committer | Marcel Hollerbach <marcel-hollerbach@t-online.de> | 2015-10-05 12:54:39 +0200 |
commit | 3d44dea840adb8e6a1fa367390f67761296f077c (patch) | |
tree | 8b437490f5388e149bfb88e0bf41314e0ea95bc1 | |
parent | 09c5d0cc396b84b88c38d44acf247c7308792553 (diff) | |
download | elementary-3d44dea840adb8e6a1fa367390f67761296f077c.tar.gz |
settingswidget: Added new api call recreate
-rw-r--r-- | src/bin/test_settingspane.c | 17 | ||||
-rw-r--r-- | src/lib/elc_settingspane.c | 25 | ||||
-rw-r--r-- | src/lib/elm_settingspane_item.eo | 5 |
3 files changed, 47 insertions, 0 deletions
diff --git a/src/bin/test_settingspane.c b/src/bin/test_settingspane.c index 93d9f6df7..4efac888a 100644 --- a/src/bin/test_settingspane.c +++ b/src/bin/test_settingspane.c @@ -204,6 +204,15 @@ del_focused_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_U elm_settingspane_item_delete(item); } +static void +recreate_focused_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Elm_Settingspane_Item *item; + + item = elm_settingspane_focused_get(data); + + elm_settingspane_item_recreate(item); +} void test_settingspane(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -299,6 +308,14 @@ test_settingspane(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev elm_box_pack_end(btnbox, o); evas_object_show(o); + o = elm_button_add(win); + elm_object_text_set(o, "recreate current item"); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(o, "clicked", recreate_focused_cb, sw); + elm_box_pack_end(btnbox, o); + evas_object_show(o); + evas_object_show(win); evas_object_resize(win, 500, 500); } diff --git a/src/lib/elc_settingspane.c b/src/lib/elc_settingspane.c index 6ee5e727f..e45fccdfc 100644 --- a/src/lib/elc_settingspane.c +++ b/src/lib/elc_settingspane.c @@ -1514,6 +1514,31 @@ _elm_settingspane_item_eo_base_destructor(Eo *obj EINA_UNUSED, Elm_Settingspane_ eo_do_super(obj, ELM_SETTINGSPANE_ITEM_CLASS, eo_destructor()); } +EOLIAN static void +_elm_settingspane_item_recreate(Elm_Settingspane_Item *obj, Elm_Settingspane_Item_Data *pd) +{ + Evas_Object *shown = evas_object_data_get(pd->sw, DK_MAIN_PANEL_SHOWED); + Evas_Object *tmp; + Elm_Settingspane_Item *cf; + + cf = eo_do(pd->sw, elm_obj_settingspane_focused_get()); + + if (cf != obj) return; + + tmp = elm_scroller_add(pd->sw); + eo_ref(tmp); + evas_object_size_hint_weight_set(tmp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(tmp); + elm_object_content_set(tmp, _item_content_get(obj, pd->sw)); + + elm_layout_content_unset(shown, POS_PANEL_CONTENT); + elm_object_part_content_set(shown, POS_PANEL_CONTENT, tmp); + + if (pd->panel.tmp_content) + _content_del(obj); + + pd->panel.tmp_content = tmp; +} EOLIAN static void _elm_settingspane_item_keywords_set(Elm_Settingspane_Item *obj EINA_UNUSED, Elm_Settingspane_Item_Data *pd, Eina_Stringshare *str) diff --git a/src/lib/elm_settingspane_item.eo b/src/lib/elm_settingspane_item.eo index 9ad8bc894..99adadb0a 100644 --- a/src/lib/elm_settingspane_item.eo +++ b/src/lib/elm_settingspane_item.eo @@ -113,6 +113,11 @@ class Elm_Settingspane_Item(Eo.Base){ } } methods { + recreate { + /*@ + Recreates the content of a item when the item is currently displayed + */ + } attach_panel { /*@ Attach a panel to the item |