jpeg pushed a commit to branch master.

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

commit b5c241ca084b163fa5704e03fe5ba8781333b834
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Mon Oct 16 20:58:46 2017 +0900

    frame: Implement content set/get/unset
    
    Not a huge fan of my macro as it uses efl_part() where a direct call
    could be possible, depending on the widget (win can, frame can't).
    
    See D5241
---
 src/bin/elementary/test_ui_box.c     |  4 ++--
 src/lib/elementary/efl_ui_frame.c    | 13 +++++++++----
 src/lib/elementary/efl_ui_frame.eo   |  4 +++-
 src/lib/elementary/efl_ui_win.c      | 21 +--------------------
 src/lib/elementary/elm_part_helper.h | 22 +++++++++++++++++++++-
 5 files changed, 36 insertions(+), 28 deletions(-)

diff --git a/src/bin/elementary/test_ui_box.c b/src/bin/elementary/test_ui_box.c
index e023f3cde1..dcaacebb4d 100644
--- a/src/bin/elementary/test_ui_box.c
+++ b/src/bin/elementary/test_ui_box.c
@@ -238,7 +238,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_in
 
    hbox = efl_add(EFL_UI_BOX_CLASS, win,
                   efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL));
-   elm_object_content_set(f, hbox);
+   efl_content_set(f, hbox);
    efl_pack_padding_set(hbox, 10, 0, EINA_TRUE);
 
 
@@ -481,7 +481,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_in
    efl_pack_padding_set(bx, 10, 10, EINA_TRUE);
    efl_gfx_size_hint_align_set(bx, 0.5, 0.5);
    efl_gfx_size_hint_weight_set(bx, 1, 1);
-   elm_object_content_set(f, bx);
+   efl_content_set(f, bx);
 
    objects[i++] = o = elm_button_add(win);
    elm_object_text_set(o, "Btn1");
diff --git a/src/lib/elementary/efl_ui_frame.c 
b/src/lib/elementary/efl_ui_frame.c
index 805ac5989c..16487b5e27 100644
--- a/src/lib/elementary/efl_ui_frame.c
+++ b/src/lib/elementary/efl_ui_frame.c
@@ -211,17 +211,22 @@ _efl_ui_frame_class_constructor(Efl_Class *klass)
       evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
 }
 
+/* Default text (title) and content */
+
 ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_frame, Efl_Ui_Frame_Data)
 ELM_PART_MARKUP_DEFAULT_IMPLEMENT(efl_ui_frame, Efl_Ui_Frame_Data)
+ELM_PART_CONTENT_DEFAULT_SET(efl_ui_frame, "elm.swallow.content")
+ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_frame, Efl_Ui_Frame_Data)
 
 /* Internal EO APIs and hidden overrides */
 
-ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
-ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
+ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(efl_ui_frame)
+ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(efl_ui_frame)
 
 #define EFL_UI_FRAME_EXTRA_OPS \
    EFL_CANVAS_GROUP_ADD_OPS(efl_ui_frame), \
-   ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
-   ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX)
+   ELM_LAYOUT_CONTENT_ALIASES_OPS(efl_ui_frame), \
+   ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_frame), \
+   ELM_LAYOUT_TEXT_ALIASES_OPS(efl_ui_frame)
 
 #include "efl_ui_frame.eo.c"
diff --git a/src/lib/elementary/efl_ui_frame.eo 
b/src/lib/elementary/efl_ui_frame.eo
index dab44bbf35..beddf4cb66 100644
--- a/src/lib/elementary/efl_ui_frame.eo
+++ b/src/lib/elementary/efl_ui_frame.eo
@@ -1,5 +1,5 @@
 class Efl.Ui.Frame (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Text, Efl.Text.Markup,
-                    Efl.Ui.Translatable)
+                    Efl.Ui.Translatable, Efl.Container)
 {
    [[Frame widget
 
@@ -60,5 +60,7 @@ class Efl.Ui.Frame (Efl.Ui.Layout, Efl.Ui.Clickable, 
Efl.Text, Efl.Text.Markup,
       Efl.Text.text { get; set; }
       Efl.Text.Markup.markup { get; set; }
       Efl.Ui.Translatable.translatable_text { get; set; }
+      Efl.Container.content { get; set; }
+      Efl.Container.content_unset;
    }
 }
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 79ca364c5d..17819923bb 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -6992,26 +6992,6 @@ _efl_ui_win_part_file_get(Eo *obj, Efl_Ui_Win_Data *sd, 
const char *part, const
    return EINA_FALSE;
 }
 
-/* Default content */
-
-EOLIAN static Eina_Bool
-_efl_ui_win_efl_container_content_set(Eo *obj, Efl_Ui_Win_Data *sd, 
Evas_Object *content)
-{
-   return _efl_ui_win_content_set(obj, sd, "content", content);
-}
-
-EOLIAN static Evas_Object*
-_efl_ui_win_efl_container_content_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
-{
-   return _efl_ui_win_content_get(obj, sd, "content");
-}
-
-EOLIAN static Evas_Object*
-_efl_ui_win_efl_container_content_unset(Eo *obj, Efl_Ui_Win_Data *sd)
-{
-   return _efl_ui_win_content_unset(obj, sd, "content");
-}
-
 /* Efl.Part begin */
 
 static void
@@ -7058,6 +7038,7 @@ ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_win, EFL_UI_WIN, 
Efl_Ui_Win_Data)
 ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data)
 ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data)
 ELM_PART_CONTENT_DEFAULT_SET(efl_ui_win, "content")
+ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_win, Efl_Ui_Win_Data)
 #include "efl_ui_win_part.eo.c"
 
 /* Efl.Part end */
diff --git a/src/lib/elementary/elm_part_helper.h 
b/src/lib/elementary/elm_part_helper.h
index f776b27eb6..20d13035cb 100644
--- a/src/lib/elementary/elm_part_helper.h
+++ b/src/lib/elementary/elm_part_helper.h
@@ -23,7 +23,8 @@ struct _Elm_Part_Data
 // Note: this generic implementation can be improved to support part object
 // caching or something...
 
-
+// FIXME: Some widgets return the alias name, some return the real name
+// alias doesn't work for frame, _elm_layout_part_aliasing_eval() fails for 
scroller
 #define ELM_PART_CONTENT_DEFAULT_SET(type, part) \
    static const char * _ ## type ## _default_content_part_get(const Eo *obj 
EINA_UNUSED, void *sd EINA_UNUSED) { return part; }
 
@@ -36,6 +37,25 @@ struct _Elm_Part_Data
 #define ELM_PART_TEXT_DEFAULT_OPS(type) \
    EFL_OBJECT_OP_FUNC(elm_widget_default_text_part_get, _ ## type ## 
_default_text_part_get)
 
+#define ELM_PART_CONTENT_DEFAULT_IMPLEMENT(type, typedata) \
+   EOLIAN static Eina_Bool \
+   _ ## type ## _efl_container_content_set(Eo *obj, typedata *sd, Evas_Object 
*content) \
+   { \
+      return efl_content_set(efl_part(obj, _ ## type ## 
_default_content_part_get(obj, sd)), content); \
+   } \
+   \
+   EOLIAN static Evas_Object* \
+   _ ## type ## _efl_container_content_get(Eo *obj, typedata *sd) \
+   { \
+      return efl_content_get(efl_part(obj, _ ## type ## 
_default_content_part_get(obj, sd))); \
+   } \
+   \
+   EOLIAN static Evas_Object* \
+   _ ## type ## _efl_container_content_unset(Eo *obj, typedata *sd) \
+   { \
+      return efl_content_unset(efl_part(obj, _ ## type ## 
_default_content_part_get(obj, sd))); \
+   }
+
 
 // For any widget that has specific part handling
 

-- 


Reply via email to