bu5hm4n pushed a commit to branch master.

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

commit c2d0b08e2b2012a8ebf4f898ca8ff4b9882df3e2
Author: Marcel Hollerbach <[email protected]>
Date:   Sat Sep 30 20:01:18 2017 +0200

    elm_segment_control: migrate to composition!
    
    Yes! We now have a widget where the we can focus items ... but nothing
    more ... ?!
---
 src/lib/elementary/elm_segment_control.c       | 40 ++++++--------------------
 src/lib/elementary/elm_segment_control.eo      |  5 +---
 src/lib/elementary/elm_segment_control_item.eo |  3 +-
 3 files changed, 12 insertions(+), 36 deletions(-)

diff --git a/src/lib/elementary/elm_segment_control.c 
b/src/lib/elementary/elm_segment_control.c
index 11a1753b8c..7548ed0aa0 100644
--- a/src/lib/elementary/elm_segment_control.c
+++ b/src/lib/elementary/elm_segment_control.c
@@ -5,6 +5,7 @@
 #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
 #define ELM_WIDGET_ITEM_PROTECTED
 #define EFL_UI_TRANSLATABLE_PROTECTED
+#define EFL_UI_FOCUS_COMPOSITION_PROTECTED
 
 #include <Elementary.h>
 
@@ -12,6 +13,7 @@
 #include "elm_segment_control.eo.h"
 #include "elm_segment_control_item.eo.h"
 #include "elm_widget_segment_control.h"
+#include "efl_ui_focus_composition.eo.h"
 
 #define MY_CLASS ELM_SEGMENT_CONTROL_CLASS
 
@@ -138,6 +140,7 @@ _update_list(Elm_Segment_Control_Data *sd)
    int item_count;
    Elm_Object_Item *eo_it;
 
+   efl_ui_focus_composition_elements_set(sd->obj, eina_list_clone(sd->items));
    _position_items(sd);
 
    item_count = eina_list_count(sd->items);
@@ -645,37 +648,6 @@ _elm_segment_control_efl_canvas_group_group_del(Eo *obj, 
Elm_Segment_Control_Dat
 
 static Eina_Bool _elm_segment_control_smart_focus_next_enable = EINA_FALSE;
 
-EOLIAN static Eina_Bool
-_elm_segment_control_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, 
Elm_Segment_Control_Data *_pd EINA_UNUSED)
-{
-   return _elm_segment_control_smart_focus_next_enable;
-}
-
-EOLIAN static Eina_Bool
-_elm_segment_control_elm_widget_focus_next(Eo *obj, Elm_Segment_Control_Data 
*sd, Elm_Focus_Direction dir, Evas_Object **next, Elm_Object_Item **next_item)
-{
-   Eina_List *items = NULL;
-   Eina_List *l;
-   Elm_Object_Item *eo_item;
-
-   ELM_SEGMENT_CONTROL_CHECK(obj) EINA_FALSE;
-
-   EINA_LIST_FOREACH(sd->items, l, eo_item)
-     {
-        ELM_SEGMENT_ITEM_DATA_GET(eo_item, it);
-        items = eina_list_append(items, it->base->access_obj);
-     }
-
-   return elm_widget_focus_list_next_get
-            (obj, items, eina_list_data_get, dir, next, next_item);
-}
-
-EOLIAN static Eina_Bool
-_elm_segment_control_elm_widget_focus_direction_manager_is(Eo *obj 
EINA_UNUSED, Elm_Segment_Control_Data *_pd EINA_UNUSED)
-{
-   return EINA_FALSE;
-}
-
 static void
 _access_obj_process(Elm_Segment_Control_Data *sd, Eina_Bool is_access)
 {
@@ -843,6 +815,12 @@ _elm_segment_control_class_constructor(Efl_Class *klass)
       _elm_segment_control_smart_focus_next_enable = EINA_TRUE;
 }
 
+EOLIAN static Eina_Rect
+_elm_segment_control_item_efl_ui_focus_object_focus_geometry_get(Eo *obj 
EINA_UNUSED, Elm_Segment_Control_Item_Data *pd)
+{
+   return efl_gfx_geometry_get(VIEW(pd));
+}
+
 /* Internal EO APIs and hidden overrides */
 
 #define ELM_SEGMENT_CONTROL_EXTRA_OPS \
diff --git a/src/lib/elementary/elm_segment_control.eo 
b/src/lib/elementary/elm_segment_control.eo
index b9a3f94095..834fe81965 100644
--- a/src/lib/elementary/elm_segment_control.eo
+++ b/src/lib/elementary/elm_segment_control.eo
@@ -1,4 +1,4 @@
-class Elm.Segment_Control (Efl.Ui.Layout)
+class Elm.Segment_Control (Efl.Ui.Layout, Efl.Ui.Focus.Composition)
 {
    [[Elementary segment control class]]
    legacy_prefix: elm_segment_control;
@@ -137,9 +137,6 @@ class Elm.Segment_Control (Efl.Ui.Layout)
       class.constructor;
       Efl.Object.constructor;
       Elm.Widget.theme_apply;
-      Elm.Widget.focus_next_manager_is;
-      Elm.Widget.focus_next;
-      Elm.Widget.focus_direction_manager_is;
       Elm.Widget.on_access_update;
       Elm.Widget.on_disabled_update;
       Efl.Ui.Translatable.translation_update;
diff --git a/src/lib/elementary/elm_segment_control_item.eo 
b/src/lib/elementary/elm_segment_control_item.eo
index 3a0b973ff5..743b0586f5 100644
--- a/src/lib/elementary/elm_segment_control_item.eo
+++ b/src/lib/elementary/elm_segment_control_item.eo
@@ -1,4 +1,4 @@
-class Elm.Segment_Control.Item(Elm.Widget.Item)
+class Elm.Segment_Control.Item(Elm.Widget.Item, Efl.Ui.Focus.Object)
 {
    [[Elementary segment control item class]]
    legacy_prefix: elm_segment_control_item;
@@ -41,5 +41,6 @@ class Elm.Segment_Control.Item(Elm.Widget.Item)
         Elm.Widget.Item.access_register;
         Elm.Widget.Item.part_text { get; set; }
         Elm.Widget.Item.part_content { get; set; }
+        Efl.Ui.Focus.Object.focus_geometry {get; }
    }
 }

-- 


Reply via email to