bu5hm4n pushed a commit to branch master.

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

commit 1f8e6dcb371c0a91e17e80ebb86b3749072b4fef
Author: Marcel Hollerbach <[email protected]>
Date:   Wed Nov 16 18:58:57 2016 +0100

    elm_widget: add debugging informations for a manager in a widget
---
 src/lib/elementary/efl_ui_focus_manager.c  |  2 +-
 src/lib/elementary/efl_ui_focus_manager.eo |  1 +
 src/lib/elementary/elm_widget.c            | 35 +++++++++++++++++++++++-------
 3 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_manager.c 
b/src/lib/elementary/efl_ui_focus_manager.c
index 1a58f9b..71ead77 100644
--- a/src/lib/elementary/efl_ui_focus_manager.c
+++ b/src/lib/elementary/efl_ui_focus_manager.c
@@ -1118,7 +1118,7 @@ _efl_ui_focus_manager_fetch(Eo *obj, 
Efl_Ui_Focus_Manager_Data *pd, Efl_Ui_Focus
    res->down = DIR_CLONE(EFL_UI_FOCUS_DIRECTION_DOWN);
    res->next = _next(n)->focusable;
    res->prev = _prev(n)->focusable;
-
+   res->redirect = n->type == NODE_TYPE_LISTENER ? n->data.listener.manager : 
NULL;
 #undef DIR_CLONE
 
    return res;
diff --git a/src/lib/elementary/efl_ui_focus_manager.eo 
b/src/lib/elementary/efl_ui_focus_manager.eo
index 9d68776..9cf8a36 100644
--- a/src/lib/elementary/efl_ui_focus_manager.eo
+++ b/src/lib/elementary/efl_ui_focus_manager.eo
@@ -16,6 +16,7 @@ struct Efl.Ui.Focus.Relations{
     down : list<Efl.Ui.Focus.Object>;
     next : Efl.Ui.Focus.Object;
     prev : Efl.Ui.Focus.Object;
+    redirect : Efl.Ui.Focus.Manager;
 }
 
 class Efl.Ui.Focus.Manager (Efl.Object) {
diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 44f2f7e..ed1dbc5 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -3887,13 +3887,12 @@ _elm_widget_theme_object_set(Eo *obj, 
Elm_Widget_Smart_Data *sd, Evas_Object *ed
 }
 
 static void
-_convert(Efl_Dbg_Info *info, Eina_List *ptr_list)
+_convert(Efl_Dbg_Info *info, Eina_Iterator *ptr_list)
 {
-   Eina_List *n;
    void *p;
    int i = 0;
 
-   EINA_LIST_FOREACH(ptr_list, n, p)
+   EINA_ITERATOR_FOREACH(ptr_list, p)
      {
         char name[100];
 
@@ -3902,6 +3901,8 @@ _convert(Efl_Dbg_Info *info, Eina_List *ptr_list)
         EFL_DBG_INFO_APPEND(info, name, EINA_VALUE_TYPE_UINT64, p);
         i++;
      }
+
+   eina_iterator_free(ptr_list);
 }
 
 EOLIAN static void
@@ -3928,18 +3929,20 @@ _elm_widget_efl_object_dbg_info_get(Eo *eo_obj, 
Elm_Widget_Smart_Data *_pd EINA_
    EFL_DBG_INFO_APPEND(group, "Automatic mirroring", EINA_VALUE_TYPE_CHAR,
          elm_widget_mirrored_automatic_get(eo_obj));
 
-
    rel = efl_ui_focus_manager_fetch(_pd->focus.manager, eo_obj);
    if (rel)
      {
         focus = EFL_DBG_INFO_LIST_APPEND(group, "Focus");
 
-        EFL_DBG_INFO_APPEND(focus, "Next", EINA_VALUE_TYPE_UINT64 , rel->next);
-        EFL_DBG_INFO_APPEND(focus, "Prev", EINA_VALUE_TYPE_UINT64 , rel->prev);
+        EFL_DBG_INFO_APPEND(focus, "manager", EINA_VALUE_TYPE_UINT64, 
_pd->focus.manager);
+
+        EFL_DBG_INFO_APPEND(focus, "next", EINA_VALUE_TYPE_UINT64 , rel->next);
+        EFL_DBG_INFO_APPEND(focus, "prev", EINA_VALUE_TYPE_UINT64 , rel->prev);
+        EFL_DBG_INFO_APPEND(focus, "redirect", EINA_VALUE_TYPE_UINT64 , 
rel->redirect);
 
 #define ADD_PTR_LIST(name) \
-        Efl_Dbg_Info* name = EFL_DBG_INFO_LIST_APPEND(focus, " "#name" "); \
-        _convert(name, rel->name);
+        Efl_Dbg_Info* name = EFL_DBG_INFO_LIST_APPEND(focus, ""#name""); \
+        _convert(name, eina_list_iterator_new(rel->name));
 
         ADD_PTR_LIST(top)
         ADD_PTR_LIST(down)
@@ -3949,6 +3952,22 @@ _elm_widget_efl_object_dbg_info_get(Eo *eo_obj, 
Elm_Widget_Smart_Data *_pd EINA_
 #undef ADD_PTR_LIST
 
      }
+
+   //if thats a focus manager, give usefull informations like the border 
elements
+   if (efl_isa(eo_obj, EFL_UI_FOCUS_MANAGER_CLASS))
+     {
+        Efl_Dbg_Info *border;
+
+        focus = EFL_DBG_INFO_LIST_APPEND(group, "Focus Manager");
+        border = EFL_DBG_INFO_LIST_APPEND(focus, "Border Elements");
+
+        _convert(border,
+          efl_ui_focus_manager_border_elements_get(eo_obj)
+        );
+
+        EFL_DBG_INFO_APPEND(focus, "redirect", EINA_VALUE_TYPE_UINT64,
+          efl_ui_focus_manager_redirect_get(eo_obj));
+     }
 }
 
 EAPI Eina_Bool

-- 


Reply via email to