summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2018-10-01 10:50:12 +0200
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2018-11-13 17:01:37 +0100
commitd5fea77162ce6c5e0a4506f0c503e83183385aa8 (patch)
tree7a432e24c6e9537e1a779b4a33bf7a9850df6ff0
parentc972347c1c513618ce62900be7a205763c107d91 (diff)
downloadefl-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.c20
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)
{