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 <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7677
This commit is contained in:
Christopher Michael 2019-01-17 07:52:15 -05:00 committed by Marcel Hollerbach
parent fc48e19b56
commit c98288c20e
1 changed files with 10 additions and 2 deletions

View File

@ -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