bu5hm4n pushed a commit to branch master.

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

commit 613649a39fe1481af494f33542c020b0b632183a
Author: Marcel Hollerbach <[email protected]>
Date:   Fri Oct 20 17:21:19 2017 +0200

    elm_gengrid: add pseudo widget into the item if there are no focusable
    widgets
---
 src/lib/elementary/elm_gengrid.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index a2cdc83c30..addcbeaf0d 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -14,6 +14,7 @@
 #include "elm_widget_gengrid.h"
 #include "elm_interface_scrollable.h"
 #include "efl_ui_focus_parent_provider_gen.eo.h"
+#include "efl_ui_focus_composition_adapter.eo.h"
 
 #define MY_PAN_CLASS ELM_GENGRID_PAN_CLASS
 
@@ -4234,7 +4235,13 @@ static void
 _gengrid_element_focused(void *data, const Efl_Event *ev)
 {
    ELM_GENGRID_DATA_GET(data, pd);
-   Elm_Widget_Item *item = 
efl_ui_focus_parent_provider_find_logical_parent(pd->provider, ev->info);
+   Elm_Widget_Item *item;
+
+   if (efl_isa(ev->info, EFL_UI_FOCUS_COMPOSITION_ADAPTER_CLASS))
+     item = efl_parent_get(ev->info);
+   else
+     item = efl_ui_focus_parent_provider_find_logical_parent(pd->provider, 
ev->info);
+
    if (efl_isa(item, ELM_GENGRID_ITEM_CLASS))
      {
         _elm_gengrid_item_focused(item);
@@ -5733,6 +5740,13 @@ _elm_gengrid_item_efl_ui_focus_object_prepare_logical(Eo 
*obj, Elm_Gen_Item *pd)
 {
    efl_ui_focus_object_prepare_logical(efl_super(obj, ELM_GENGRID_ITEM_CLASS));
    _item_realize(pd);
+
+   if (!efl_ui_focus_manager_request_subchild(WIDGET(pd), obj))
+     {
+        Eo *adapter = efl_add(EFL_UI_FOCUS_COMPOSITION_ADAPTER_CLASS, VIEW(pd) 
, efl_ui_focus_composition_adapter_canvas_object_set(efl_added,  VIEW(pd)));
+
+        efl_ui_focus_manager_calc_register(WIDGET(pd), adapter, obj, NULL);
+     }
 }
 
 

-- 


Reply via email to