summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Juyung Seo <seojuyung2@gmail.com>2014-03-02 00:26:08 +0900
committerDaniel Juyung Seo <seojuyung2@gmail.com>2014-03-02 00:26:08 +0900
commita02c47440622ccaf8af2dc536e9e01bad38c03d9 (patch)
tree9d3c514b569ac7cc6e7de2581e5739c573e3c156
parent1c0b42d2664ea021b1f9e5abff0a9e0af22a74db (diff)
downloadelementary-a02c47440622ccaf8af2dc536e9e01bad38c03d9.tar.gz
list: Run focus set/unset routine only when the focus status is changed.
I didn't tag this as 'fix' because this feature was added after 1.9 release.
-rw-r--r--src/lib/elm_list.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index 4892178c4..92b6c9ba0 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -1023,15 +1023,19 @@ _elm_list_item_unfocused(Elm_List_Item *it)
{
ELM_LIST_DATA_GET(WIDGET(it), sd);
- if (!sd->focused_item) return;
+ if (!sd->focused_item ||
+ (it != (Elm_List_Item *)sd->focused_item))
+ return;
+
sd->prev_focused_item = (Elm_Object_Item *)it;
if (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
return;
+
if (elm_widget_focus_highlight_enabled_get(WIDGET(sd->focused_item)))
edje_object_signal_emit
(VIEW(sd->focused_item), "elm,state,unfocused", "elm");
- if (it == (Elm_List_Item *)sd->focused_item)
- sd->focused_item = NULL;
+
+ sd->focused_item = NULL;
evas_object_smart_callback_call
(WIDGET(it), SIG_ITEM_UNFOCUSED, it);
}
@@ -1692,9 +1696,11 @@ _item_focus_set_hook(Elm_Object_Item *it, Eina_Bool focused)
{
if (!elm_object_focus_get(obj))
elm_object_focus_set(obj, EINA_TRUE);
- if (sd->focused_item)
- _elm_list_item_unfocused((Elm_List_Item *)sd->focused_item);
- if (it != sd->focused_item) _elm_list_item_focused((Elm_List_Item *)it);
+ if (it != sd->focused_item)
+ {
+ _elm_list_item_unfocused((Elm_List_Item *)sd->focused_item);
+ _elm_list_item_focused((Elm_List_Item *)it);
+ }
}
else
_elm_list_item_unfocused((Elm_List_Item *)it);