summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <marcel-hollerbach@t-online.de>2015-02-03 12:23:59 +0100
committerMarcel Hollerbach <marcel-hollerbach@t-online.de>2015-10-05 12:54:39 +0200
commit3d44dea840adb8e6a1fa367390f67761296f077c (patch)
tree8b437490f5388e149bfb88e0bf41314e0ea95bc1
parent09c5d0cc396b84b88c38d44acf247c7308792553 (diff)
downloadelementary-3d44dea840adb8e6a1fa367390f67761296f077c.tar.gz
settingswidget: Added new api call recreate
-rw-r--r--src/bin/test_settingspane.c17
-rw-r--r--src/lib/elc_settingspane.c25
-rw-r--r--src/lib/elm_settingspane_item.eo5
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