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