From c98288c20ebaeb3ee115f316735a4e0fffa991a4 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Thu, 17 Jan 2019 07:52:15 -0500 Subject: [PATCH] efl_ui_focus_object: Don't pass NULL to child_focus_set When starting elementary_test, efl_ui_focus_object_child_focus_set is getting passed NULL on startup because elm_test window has no parent. This makes it difficult to debug and fix T7030 issues. In order to fix the issue, this patch checks for a valid parent before calling efl_ui_focus_object_child_focus_set so that it no longer gets passed NULL on elm_test startup and we can set breakpoints on eo.c:637 without getting interrupted at startup. ref T7030 Reviewed-by: Marcel Hollerbach Differential Revision: https://phab.enlightenment.org/D7677 --- src/lib/elementary/efl_ui_focus_object.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_object.c b/src/lib/elementary/efl_ui_focus_object.c index 89e7af2a5d..37c65a0544 100644 --- a/src/lib/elementary/efl_ui_focus_object.c +++ b/src/lib/elementary/efl_ui_focus_object.c @@ -16,10 +16,14 @@ typedef struct { EOLIAN static void _efl_ui_focus_object_focus_set(Eo *obj, Efl_Ui_Focus_Object_Data *pd, Eina_Bool focus) { + Efl_Ui_Focus_Object *parent; + if (pd->old_focus == focus) return; pd->old_focus = focus; - efl_ui_focus_object_child_focus_set(efl_ui_focus_object_focus_parent_get(obj), focus); + parent = efl_ui_focus_object_focus_parent_get(obj); + if (parent) + efl_ui_focus_object_child_focus_set(parent, focus); efl_event_callback_call(obj, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED , (void*) (uintptr_t) focus); } @@ -44,10 +48,14 @@ _efl_ui_focus_object_prepare_logical(Eo *obj, Efl_Ui_Focus_Object_Data *pd) EOLIAN static void _efl_ui_focus_object_child_focus_set(Eo *obj, Efl_Ui_Focus_Object_Data *pd, Eina_Bool child_focus) { + Efl_Ui_Focus_Object *parent; + if (child_focus == pd->child_focus) return; pd->child_focus = child_focus; - efl_ui_focus_object_child_focus_set(efl_ui_focus_object_focus_parent_get(obj), pd->child_focus); + parent = efl_ui_focus_object_focus_parent_get(obj); + if (parent) + efl_ui_focus_object_child_focus_set(parent, pd->child_focus); } EOLIAN static Eina_Bool