bu5hm4n pushed a commit to branch master.

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

commit 124586c8e4cc1521b7421582119c41a5156b77cf
Author: Marcel Hollerbach <mar...@osg.samsung.com>
Date:   Sun Oct 15 19:44:35 2017 +0200

    elm_toolbar: make the manager customisable
    
    so the toolbar items can be registered correctly
---
 src/lib/elementary/efl_ui_focus_composition.c  | 30 +++++++++++++++++++++-----
 src/lib/elementary/efl_ui_focus_composition.eo |  6 ++++++
 src/lib/elementary/elm_toolbar.c               |  2 ++
 3 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_composition.c 
b/src/lib/elementary/efl_ui_focus_composition.c
index 051777d020..b9f94847cb 100644
--- a/src/lib/elementary/efl_ui_focus_composition.c
+++ b/src/lib/elementary/efl_ui_focus_composition.c
@@ -14,20 +14,27 @@ typedef struct {
    Eina_List *order, *targets_ordered;
    Eina_List *register_target, *registered_targets;
    Eina_List *adapters;
-   Efl_Ui_Focus_Manager *registered;
+   Efl_Ui_Focus_Manager *registered, *custom_manager;
    Eina_Bool dirty;
 } Efl_Ui_Focus_Composition_Data;
 
 static void
 _state_apply(Eo *obj, Efl_Ui_Focus_Composition_Data *pd)
 {
+   Efl_Ui_Focus_Manager *manager;
+
+   if (pd->custom_manager)
+     manager = pd->custom_manager;
+   else
+     manager = pd->registered;
+
    if (!pd->registered && pd->registered_targets)
      {
         Efl_Ui_Focus_Object *o;
         //remove all of them
         EINA_LIST_FREE(pd->registered_targets, o)
           {
-             efl_ui_focus_manager_calc_unregister(pd->registered, o);
+             efl_ui_focus_manager_calc_unregister(manager, o);
           }
      }
    else if (pd->registered)
@@ -37,16 +44,16 @@ _state_apply(Eo *obj, Efl_Ui_Focus_Composition_Data *pd)
         //remove all of them
         EINA_LIST_FREE(pd->registered_targets, o)
           {
-             efl_ui_focus_manager_calc_unregister(pd->registered, o);
+             efl_ui_focus_manager_calc_unregister(manager, o);
           }
 
         EINA_LIST_FOREACH(pd->register_target, n, o)
           {
-             efl_ui_focus_manager_calc_register(pd->registered, o, obj, NULL);
+             efl_ui_focus_manager_calc_register(manager, o, obj, NULL);
              pd->registered_targets = eina_list_append(pd->registered_targets, 
o);
           }
 
-        efl_ui_focus_manager_calc_update_order(pd->registered, obj, 
eina_list_clone(pd->targets_ordered));
+        efl_ui_focus_manager_calc_update_order(manager, obj, 
eina_list_clone(pd->targets_ordered));
      }
 }
 
@@ -155,6 +162,19 @@ 
_efl_ui_focus_composition_efl_ui_focus_object_prepare_logical(Eo *obj, Efl_Ui_Fo
    pd->dirty = EINA_FALSE;
 }
 
+EOLIAN static void
+_efl_ui_focus_composition_custom_manager_set(Eo *obj EINA_UNUSED, 
Efl_Ui_Focus_Composition_Data *pd, Efl_Ui_Focus_Manager *custom_manager)
+{
+   pd->custom_manager = custom_manager;
+}
+
+EOLIAN static Efl_Ui_Focus_Manager*
+_efl_ui_focus_composition_custom_manager_get(Eo *obj EINA_UNUSED, 
Efl_Ui_Focus_Composition_Data *pd)
+{
+   return pd->custom_manager;
+}
+
+
 #include "efl_ui_focus_composition.eo.c"
 
 typedef struct {
diff --git a/src/lib/elementary/efl_ui_focus_composition.eo 
b/src/lib/elementary/efl_ui_focus_composition.eo
index 5d0f23b200..57f5d3818a 100644
--- a/src/lib/elementary/efl_ui_focus_composition.eo
+++ b/src/lib/elementary/efl_ui_focus_composition.eo
@@ -29,6 +29,12 @@ mixin Efl.Ui.Focus.Composition (Efl.Interface, Elm.Widget ) {
            You can use this function to call composition_elements.
          ]]
       }
+      @property custom_manager @protected {
+         [[Every widget will be registered in this manager]]
+         values {
+            custom_manager : Efl.Ui.Focus.Manager;
+         }
+      }
    }
    implements {
       Elm.Widget.focus_state_apply;
diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c
index e9d9a1c123..8c69e640a7 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -2966,6 +2966,8 @@ _elm_toolbar_efl_object_constructor(Eo *obj, 
Elm_Toolbar_Data *_pd EINA_UNUSED)
    evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
    elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_TOOL_BAR);
 
+   efl_ui_focus_composition_custom_manager_set(obj, obj);
+
    return obj;
 }
 

-- 


Reply via email to