summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/elementary/elm_widget_item_static_focus.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/lib/elementary/elm_widget_item_static_focus.c b/src/lib/elementary/elm_widget_item_static_focus.c
index 168e982197..6a8a82aa6d 100644
--- a/src/lib/elementary/elm_widget_item_static_focus.c
+++ b/src/lib/elementary/elm_widget_item_static_focus.c
@@ -15,6 +15,7 @@
15typedef struct { 15typedef struct {
16 Eo *adapter; 16 Eo *adapter;
17 Eina_Bool realized; 17 Eina_Bool realized;
18 Eina_Bool in_unrealize;
18} Elm_Widget_Item_Static_Focus_Data; 19} Elm_Widget_Item_Static_Focus_Data;
19 20
20static void 21static void
@@ -73,7 +74,9 @@ _unrealized_cb(void *data, const Efl_Event *ev EINA_UNUSED)
73 //only delete the adapter when not focused, this will lead to awfull artifacts 74 //only delete the adapter when not focused, this will lead to awfull artifacts
74 if (!efl_ui_focus_object_focus_get(pd->adapter)) 75 if (!efl_ui_focus_object_focus_get(pd->adapter))
75 { 76 {
77 pd->in_unrealize = EINA_TRUE;
76 efl_del(pd->adapter); 78 efl_del(pd->adapter);
79 pd->in_unrealize = EINA_FALSE;
77 } 80 }
78 pd->realized = EINA_FALSE; 81 pd->realized = EINA_FALSE;
79 } 82 }
@@ -126,9 +129,12 @@ _elm_widget_item_static_focus_efl_ui_focus_object_prepare_logical_none_recursive
126 } 129 }
127 else if (logical_child && logical_child != pd->adapter) 130 else if (logical_child && logical_child != pd->adapter)
128 { 131 {
129 efl_ui_focus_manager_calc_unregister(wpd->widget, pd->adapter); 132 if (!pd->in_unrealize)
130 efl_del(pd->adapter); 133 {
131 pd->adapter = NULL; 134 efl_del(pd->adapter);
135 pd->adapter = NULL;
136 }
137
132 } 138 }
133 139
134 //genlist sometimes changes views when doing quick scrolls so reset the view in every possible call 140 //genlist sometimes changes views when doing quick scrolls so reset the view in every possible call