list/genlist/gengrid: Handle on_focus event on focus set only for key
event. When you use mouse(touch) that triggers mouse up event, the focus/selection movement is done by mouse up callback, so don't need to handle on_focus event when mouse(touch) is used. You can reproduce the bug by the following step. 1. launch elementary_test -> list focus, genlist focus, gengrid focus 2. focus an item (by touch, by key) 3. move focus to left button (by touch, by key) 4. click an another item (by touch) 5. previously focused item will be unfocused again even it was unfocused at step #3/ Special thanks to Amitesh for the report.
This commit is contained in:
parent
5b07498ba1
commit
fad3a2dfc4
|
@ -2123,13 +2123,13 @@ _elm_gengrid_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
|
|||
(!sd->last_selected_item))
|
||||
sd->last_selected_item = eina_list_data_get(sd->selected);
|
||||
|
||||
if (elm_widget_focus_get(obj))
|
||||
if (elm_widget_focus_get(obj) && !sd->mouse_down)
|
||||
{
|
||||
if (sd->last_focused_item)
|
||||
it = sd->last_focused_item;
|
||||
else if (sd->last_selected_item)
|
||||
it = sd->last_selected_item;
|
||||
else if (!sd->mouse_down)
|
||||
else
|
||||
{
|
||||
it = elm_gengrid_first_item_get(obj);
|
||||
is_sel = EINA_TRUE;
|
||||
|
|
|
@ -2876,13 +2876,13 @@ _elm_genlist_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
|
|||
(!sd->last_selected_item))
|
||||
sd->last_selected_item = eina_list_data_get(sd->selected);
|
||||
|
||||
if (elm_widget_focus_get(obj))
|
||||
if (elm_widget_focus_get(obj) && !sd->mouse_down)
|
||||
{
|
||||
if (sd->last_focused_item)
|
||||
it = sd->last_focused_item;
|
||||
else if (sd->last_selected_item)
|
||||
it = sd->last_selected_item;
|
||||
else if (!sd->mouse_down)
|
||||
else
|
||||
{
|
||||
it = elm_genlist_first_item_get(obj);
|
||||
is_sel = EINA_TRUE;
|
||||
|
|
|
@ -1071,13 +1071,13 @@ _elm_list_smart_on_focus(Eo *obj, void *_pd, va_list *list)
|
|||
|
||||
if (!sd->items) return;
|
||||
|
||||
if (elm_widget_focus_get(obj))
|
||||
if (elm_widget_focus_get(obj) && !sd->mouse_down)
|
||||
{
|
||||
if (sd->last_focused_item)
|
||||
_elm_list_item_focused((Elm_List_Item *)sd->last_focused_item);
|
||||
else if (sd->last_selected_item)
|
||||
_elm_list_item_focused((Elm_List_Item *)sd->last_selected_item);
|
||||
else if (!sd->mouse_down)
|
||||
else
|
||||
elm_list_item_selected_set(
|
||||
eina_list_data_get(sd->items), EINA_TRUE);
|
||||
_elm_widget_focus_highlight_start(obj);
|
||||
|
|
Loading…
Reference in New Issue