summaryrefslogtreecommitdiff
path: root/src/lib/elementary
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2018-11-26 17:30:19 +0100
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2018-12-04 08:45:49 +0100
commit1ede2302d3bf6170fc7987d38056ce0e05001738 (patch)
tree3ba7509baebb1c2b6c3149f73855b3d2174e3430 /src/lib/elementary
parenta444ff743f87c0387247835c6c78efd1a93d6f55 (diff)
efl_ui_focus_manager_root_focus: ensure that adapter is part of viewport
This ensures that the adapter part is part of the viewport elements and border elements. This is done in order to support cases where a elm_scroller content is not focusable. Before the element was not correctly in viewport, and so not correctly registered. ref T6804 Differential Revision: https://phab.enlightenment.org/D7364
Diffstat (limited to 'src/lib/elementary')
-rw-r--r--src/lib/elementary/efl_ui_focus_manager_calc.c9
-rw-r--r--src/lib/elementary/efl_ui_focus_manager_root_focus.c4
2 files changed, 8 insertions, 5 deletions
diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c
index d6b5569cd1..b22832e41a 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -243,8 +243,11 @@ node_item_free(Node *item)
243#define MAKE_LIST_DIRTY(node, field) \ 243#define MAKE_LIST_DIRTY(node, field) \
244 EINA_LIST_FOREACH(DIRECTION_ACCESS(node, i).field, l, partner) \ 244 EINA_LIST_FOREACH(DIRECTION_ACCESS(node, i).field, l, partner) \
245 { \ 245 { \
246 dirty_add(obj, pd, partner); \ 246 if (partner->type != NODE_TYPE_ONLY_LOGICAL) \
247 dirty_added = EINA_TRUE; \ 247 { \
248 dirty_add(obj, pd, partner); \
249 dirty_added = EINA_TRUE; \
250 } \
248 } 251 }
249 252
250 MAKE_LIST_DIRTY(item, one_direction) 253 MAKE_LIST_DIRTY(item, one_direction)
@@ -409,7 +412,7 @@ dirty_flush_node(Efl_Ui_Focus_Manager *obj EINA_UNUSED, Efl_Ui_Focus_Manager_Cal
409static void 412static void
410dirty_flush(Efl_Ui_Focus_Manager *obj, Efl_Ui_Focus_Manager_Calc_Data *pd, Node *node) 413dirty_flush(Efl_Ui_Focus_Manager *obj, Efl_Ui_Focus_Manager_Calc_Data *pd, Node *node)
411{ 414{
412 if (!pd->dirty) return; 415 if (!pd->dirty && node->type == NODE_TYPE_NORMAL) return;
413 416
414 efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_FLUSH_PRE, NULL); 417 efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_FLUSH_PRE, NULL);
415 418
diff --git a/src/lib/elementary/efl_ui_focus_manager_root_focus.c b/src/lib/elementary/efl_ui_focus_manager_root_focus.c
index 0df8b5e862..82eb1fb697 100644
--- a/src/lib/elementary/efl_ui_focus_manager_root_focus.c
+++ b/src/lib/elementary/efl_ui_focus_manager_root_focus.c
@@ -180,7 +180,7 @@ _efl_ui_focus_manager_root_focus_canvas_object_set(Eo *obj, Efl_Ui_Focus_Manager
180 180
181 if (pd->replacement_object) 181 if (pd->replacement_object)
182 { 182 {
183 pd->iterator_list = eina_list_remove(pd->iterator_list, pd->replacement_object); 183 pd->iterator_list = eina_list_remove(pd->iterator_list, pd->rect);
184 pd->replacement_object = NULL; 184 pd->replacement_object = NULL;
185 } 185 }
186 186
@@ -188,7 +188,7 @@ _efl_ui_focus_manager_root_focus_canvas_object_set(Eo *obj, Efl_Ui_Focus_Manager
188 if (pd->replacement_object) 188 if (pd->replacement_object)
189 { 189 {
190 efl_ui_focus_composition_adapter_canvas_object_set(pd->rect, pd->replacement_object); 190 efl_ui_focus_composition_adapter_canvas_object_set(pd->rect, pd->replacement_object);
191 pd->iterator_list = eina_list_append(pd->iterator_list, pd->replacement_object); 191 pd->iterator_list = eina_list_append(pd->iterator_list, pd->rect);
192 } 192 }
193} 193}
194 194