diff options
author | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2018-10-01 10:50:12 +0200 |
---|---|---|
committer | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2018-11-13 17:01:37 +0100 |
commit | d5fea77162ce6c5e0a4506f0c503e83183385aa8 (patch) | |
tree | 7a432e24c6e9537e1a779b4a33bf7a9850df6ff0 | |
parent | c972347c1c513618ce62900be7a205763c107d91 (diff) | |
download | efl-d5fea77162ce6c5e0a4506f0c503e83183385aa8.tar.gz |
gengrid: unset last_focused pointer when focus moved away
this was requested by T7391.
fix T7391
Differential Revision: https://phab.enlightenment.org/D7123
-rw-r--r-- | src/lib/elementary/elm_gengrid.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index 08c5416b4c..232ff2a22e 100644 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -4237,15 +4237,25 @@ _gengrid_element_focused(void *data, const Efl_Event *ev) { ELM_GENGRID_DATA_GET(data, pd); Efl_Ui_Widget *focused = efl_ui_focus_manager_focus_get(ev->object); - Elm_Widget_Item *item; - - if (!focused) return; + Elm_Widget_Item *item = NULL, *old_item = NULL; item = efl_ui_focus_parent_provider_gen_item_fetch(pd->provider, focused); + old_item = efl_ui_focus_parent_provider_gen_item_fetch(pd->provider, ev->info); + + if (old_item) + { + EINA_SAFETY_ON_FALSE_RETURN(efl_isa(old_item, ELM_GENGRID_ITEM_CLASS)); + _elm_gengrid_item_unfocused(old_item); + pd->last_focused_item = NULL; + } - EINA_SAFETY_ON_FALSE_RETURN(efl_isa(item, ELM_GENGRID_ITEM_CLASS)); + if (item) + { + EINA_SAFETY_ON_FALSE_RETURN(efl_isa(item, ELM_GENGRID_ITEM_CLASS)); + _elm_gengrid_item_focused(item); + pd->last_focused_item = item; + } - _elm_gengrid_item_focused(item); _all_items_deselect(pd); if (!_elm_config->item_select_on_focus_disable) { |