summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWooHyun Jung <wh0705.jung@samsung.com>2016-11-29 21:06:25 +0900
committerWooHyun Jung <wh0705.jung@samsung.com>2016-11-29 21:06:25 +0900
commitbf21eceb489b5971ce5d712b2788162fca198fc4 (patch)
tree08d827f3564e1a13118ffddbb4a7f3559eebca1d
parent29a7d08454bfee6c0c29b424b99ca20994a6ca28 (diff)
downloadefl-bf21eceb489b5971ce5d712b2788162fca198fc4.tar.gz
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
-rw-r--r--src/lib/elementary/elm_spinner.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/lib/elementary/elm_spinner.c b/src/lib/elementary/elm_spinner.c
index 6b8e4a21c0..ddea2780de 100644
--- a/src/lib/elementary/elm_spinner.c
+++ b/src/lib/elementary/elm_spinner.c
@@ -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);
}
@@ -851,6 +857,15 @@ _text_button_focused_cb(void *data, const Efl_Event *event EINA_UNUSED)
}
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)
{
ELM_SPINNER_DATA_GET(data, sd);