forked from enlightenment/efl
efl_ui_focus_layer: elm_widget_top_get considered harmfull
Summary: You think elm_widget_top_get returns a window object ? Oh no! For the case that the widget tree splits, and the widget_parent gets NULL of some widget in the chain, elm_widget_top_get returns where the NULL reference is placed. For the case of elm_notify this is somehow intended, as the notify does not have a parent when the parent is deleted. ref T7090 Reviewers: netstar, zmike, devilhorns Reviewed By: zmike Subscribers: cedric, #committers Tags: #efl Maniphest Tasks: T7090 Differential Revision: https://phab.enlightenment.org/D6471
This commit is contained in:
parent
1332e0e025
commit
2137ce7e1e
|
@ -62,10 +62,10 @@ _efl_ui_focus_layer_efl_object_destructor(Eo *obj, Efl_Ui_Focus_Layer_Data *pd E
|
|||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Manager*
|
||||
_efl_ui_focus_layer_efl_ui_focus_object_focus_manager_get(const Eo *obj, Efl_Ui_Focus_Layer_Data *pd EINA_UNUSED)
|
||||
_efl_ui_focus_layer_efl_ui_focus_object_focus_manager_get(const Eo *obj EINA_UNUSED, Efl_Ui_Focus_Layer_Data *pd EINA_UNUSED)
|
||||
{
|
||||
if (pd->registered_manager)
|
||||
return elm_widget_top_get(obj);
|
||||
return pd->registered_manager;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
@ -111,6 +111,7 @@ _efl_ui_focus_layer_enable_set(Eo *obj, Efl_Ui_Focus_Layer_Data *pd, Eina_Bool v
|
|||
Efl_Ui_Focus_Manager *manager;
|
||||
|
||||
pd->registered_manager = elm_widget_top_get(obj);
|
||||
EINA_SAFETY_ON_FALSE_RETURN(efl_isa(pd->registered_manager, EFL_UI_WIN_CLASS));
|
||||
manager = efl_ui_focus_util_active_manager(EFL_UI_FOCUS_UTIL_CLASS, pd->registered_manager);
|
||||
|
||||
efl_ui_focus_manager_calc_register_logical(pd->registered_manager, obj, efl_ui_focus_manager_root_get(pd->registered_manager), obj);
|
||||
|
|
Loading…
Reference in New Issue