elm_spinner: fix wrong focus logic when spinner is unfocused

When unfocusing spinner, entry's UNFOCUSED callback is called.
In the callback function, entry is hidden and spinner gets focus
from focus_revert logic.
This gave lots of meaningless focused/unfocused state changes.

@fix
This commit is contained in:
WooHyun Jung 2016-11-29 21:06:25 +09:00
parent 29a7d08454
commit bf21eceb48
1 changed files with 17 additions and 2 deletions

View File

@ -51,6 +51,8 @@ _inc_dec_button_mouse_move_cb(void *data, const Efl_Event *event);
static void
_text_button_focused_cb(void *data, const Efl_Event *event);
static void
_button_focused_cb(void *data, const Efl_Event *event);
static void
_entry_unfocused_cb(void *data, const Efl_Event *event);
EFL_CALLBACKS_ARRAY_DEFINE(_inc_dec_button_cb,
@ -606,8 +608,12 @@ _toggle_entry(Evas_Object *obj)
elm_entry_markup_filter_append(sd->ent, _invalid_input_validity_filter, NULL);
if (_elm_config->spinner_min_max_filter_enable)
elm_entry_markup_filter_append(sd->ent, _min_max_validity_filter, obj);
efl_event_callback_add
(sd->ent, ELM_WIDGET_EVENT_UNFOCUSED, _entry_unfocused_cb, obj);
if (sd->inc_button)
efl_event_callback_add
(sd->inc_button, ELM_WIDGET_EVENT_FOCUSED, _button_focused_cb, obj);
if (sd->dec_button)
efl_event_callback_add
(sd->dec_button, ELM_WIDGET_EVENT_FOCUSED, _button_focused_cb, obj);
efl_event_callback_add
(sd->ent, ELM_ENTRY_EVENT_ACTIVATED, _entry_unfocused_cb, obj);
}
@ -850,6 +856,15 @@ _text_button_focused_cb(void *data, const Efl_Event *event EINA_UNUSED)
_toggle_entry(data);
}
static void
_button_focused_cb(void *data, const Efl_Event *event EINA_UNUSED)
{
ELM_SPINNER_DATA_GET(data, sd);
sd->entry_visible = EINA_TRUE;
_toggle_entry(data);
}
static void
_entry_unfocused_cb(void *data, const Efl_Event *event EINA_UNUSED)
{