{NULL, NULL}
};
-static Eina_Bool _key_action_spin(Evas_Object *obj, const char *params);
static Eina_Bool _key_action_toggle(Evas_Object *obj, const char *params);
static Eina_Bool
static Eina_Bool
_inc_dec_button_mouse_move_cb(void *data, Eo *obj EINA_UNUSED,
const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED);
-
-static const Elm_Action key_actions[] = {
- {"spin", _key_action_spin},
- {"toggle", _key_action_toggle},
- {NULL, NULL}
-};
+static Eina_Bool
+_text_button_focused_cb(void *data, Eo *obj EINA_UNUSED,
+ const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED);
+static Eina_Bool
+_entry_unfocused_cb(void *data, Eo *obj EINA_UNUSED,
+ const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED);
EO_CALLBACKS_ARRAY_DEFINE(_inc_dec_button_cb,
{ EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _inc_dec_button_clicked_cb},
if (sd->button_layout)
{
elm_layout_signal_emit(obj, "elm,state,entry,inactive", "elm");
+ evas_object_hide(sd->ent);
elm_layout_signal_emit(obj, "elm,state,button,active", "elm");
+ evas_object_show(sd->text_button);
}
else
elm_layout_signal_emit(obj, "elm,state,inactive", "elm");
//TIZEN_ONLY(20161007): If user set special value as number. spinner value
// should not set as special value.
- const char *special_value = elm_spinner_special_value_get(obj, sd->val);
+ char *special_value = elm_spinner_special_value_get(obj, sd->val);
if (special_value && !strcmp(special_value, str)) return;
//
_delay_change_timer_cb, obj);
}
-static Eina_Bool
-_entry_activated_cb(void *data,
- Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- _entry_value_apply(data);
-
- return EINA_TRUE;
-}
-
static int
_decimal_points_get(const char *label)
{
elm_entry_select_all(obj);
sd->entry_visible = EINA_TRUE;
elm_layout_signal_emit(data, "elm,state,button,inactive", "elm");
+ evas_object_hide(sd->text_button);
//TIZEN_ONLY(20160606): Forcefully setting highlight frame on spinner entry as on entry activation frame goes to window again.
if (_elm_atspi_enabled()) eo_do(obj, elm_interface_atspi_component_highlight_grab());
//
//
}
elm_entry_single_line_set(sd->ent, EINA_TRUE);
- eo_do(sd->ent, eo_event_callback_add
- (ELM_ENTRY_EVENT_ACTIVATED, _entry_activated_cb, obj));
elm_layout_content_set(obj, "elm.swallow.entry", sd->ent);
_entry_accept_filter_add(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);
+ eo_do(sd->ent, eo_event_callback_add
+ (ELM_WIDGET_EVENT_UNFOCUSED, _entry_unfocused_cb, obj));
}
if (!sd->button_layout)
{
sd->entry_visible = EINA_TRUE;
}
elm_layout_signal_emit(obj, "elm,state,entry,active", "elm");
+ evas_object_show(sd->ent);
}
}
ELM_SPINNER_DATA_GET(data, sd);
sd->interval = sd->first_interval;
- sd->spin_speed = sd->inc_clicked ? sd->step : -sd->step;
+ sd->spin_speed = sd->inc_btn_activated ? sd->step : -sd->step;
sd->longpress_timer = NULL;
//TIZEN_ONLY(20160419): This is not SPIN UX.
//ecore_timer_del(sd->spin_timer);
elm_widget_scroll_freeze_pop(obj);
}
-static Eina_Bool
-_key_action_spin(Evas_Object *obj, const char *params)
-{
- const char *dir = params;
- Eina_Bool horz = !!strncmp(elm_widget_style_get(obj), "vertical", 8);
- ELM_SPINNER_DATA_GET(obj, sd);
-
- if (((!strcmp(dir, "left")) && horz) ||
- ((!strcmp(dir, "down")) && !horz))
- {
- sd->inc_clicked = EINA_FALSE;
- _val_inc_dec_start(obj);
- elm_layout_signal_emit(obj, "elm,left,anim,activate", "elm");
- }
- else if (((!strcmp(dir, "right")) && horz) ||
- ((!strcmp(dir, "up")) && !horz))
- {
- sd->inc_clicked = EINA_TRUE;
- _val_inc_dec_start(obj);
- elm_layout_signal_emit(obj, "elm,right,anim,activate", "elm");
- }
- else return EINA_FALSE;
-
- return EINA_TRUE;
-}
-
static Eina_Bool
_key_action_toggle(Evas_Object *obj, const char *params EINA_UNUSED)
{
if (type == EVAS_CALLBACK_KEY_DOWN)
{
- Eina_Bool ret;
-
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
- ret = _elm_config_key_binding_call(obj, ev, key_actions);
- if (!ret)
- {
- if (sd->spin_timer) _spin_stop(obj);
- else return EINA_FALSE;
- }
+ if (sd->spin_timer) _spin_stop(obj);
+ else return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
}
else if (type == EVAS_CALLBACK_KEY_UP)
{
ELM_SPINNER_DATA_GET(data, sd);
- sd->inc_clicked = !strcmp(emission, "elm,action,increment,start")
- ? EINA_TRUE : EINA_FALSE;
+ sd->inc_btn_activated =
+ !strcmp(emission, "elm,action,increment,start") ? EINA_TRUE : EINA_FALSE;
if (sd->entry_visible)
{
if (sd->val_updated)
{
- if (sd->inc_clicked)
+ if (sd->inc_btn_activated)
{
if (sd->val == sd->val_min) return;
}
{
ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del);
- if (sd->inc_clicked)
+ if (sd->inc_btn_activated)
sd->spin_speed = sd->step;
else
sd->spin_speed = -sd->step;
{
ELM_SPINNER_DATA_GET(data, sd);
- //TIZEN_ONLY(20160602): fix for atspi inc/dec bug
- sd->inc_clicked = sd->inc_button == obj ? EINA_TRUE : EINA_FALSE;
- //
-
_spin_stop(data);
- sd->spin_speed = sd->inc_clicked ? sd->step : -sd->step;
+ sd->inc_btn_activated = sd->inc_button == obj ? EINA_TRUE : EINA_FALSE;
+ sd->spin_speed = sd->inc_btn_activated ? sd->step : -sd->step;
_spin_value(data);
if (sd->entry_visible) _entry_value_apply(data);
{
ELM_SPINNER_DATA_GET(data, sd);
- sd->inc_clicked = sd->inc_button == obj ? EINA_TRUE : EINA_FALSE;
+ sd->inc_btn_activated = sd->inc_button == obj ? EINA_TRUE : EINA_FALSE;
if (sd->longpress_timer) ecore_timer_del(sd->longpress_timer);
return EINA_TRUE;
}
+static Eina_Bool
+_text_button_focused_cb(void *data,
+ Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ ELM_SPINNER_DATA_GET(data, sd);
+
+ sd->entry_visible = EINA_FALSE;
+ _toggle_entry(data);
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool
+_entry_unfocused_cb(void *data,
+ Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ ELM_SPINNER_DATA_GET(data, sd);
+
+ sd->entry_visible = EINA_TRUE;
+ _toggle_entry(data);
+
+ return EINA_TRUE;
+}
+
static Eina_Bool
_text_button_clicked_cb(void *data,
Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED,
void *event_info EINA_UNUSED)
{
+ ELM_SPINNER_DATA_GET(data, sd);
+
+ if (sd->entry_visible) return;
_toggle_entry(data);
return EINA_TRUE;
if (part_obj != inc_btn)
{
- sd->inc_clicked = EINA_FALSE;
+ sd->inc_btn_activated = EINA_FALSE;
_val_inc_dec_start(data);
elm_layout_signal_emit(data, "elm,left,anim,activate", "elm");
_spin_stop(data);
}
else
{
- sd->inc_clicked = EINA_TRUE;
+ sd->inc_btn_activated = EINA_TRUE;
_val_inc_dec_start(data);
elm_layout_signal_emit(data, "elm,right,anim,activate", "elm");
_spin_stop(data);
eo_do(priv->text_button, eo_event_callback_add
(EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _text_button_clicked_cb, obj));
+ eo_do(priv->text_button, eo_event_callback_add
+ (ELM_WIDGET_EVENT_FOCUSED, _text_button_focused_cb, obj));
elm_layout_content_set(obj, "elm.swallow.text_button", priv->text_button);
elm_widget_sub_object_add(obj, priv->text_button);
return EINA_FALSE;
list_data_get = eina_list_data_get;
+
items = eina_list_append(items, _pd->inc_button);
if (_pd->entry_visible)
items = eina_list_append(items, _pd->ent);
items = eina_list_append(items, _pd->dec_button);
ret = elm_widget_focus_list_direction_get
- (obj, base, items, list_data_get, degree, direction, direction_item, weight);
+ (obj, base, items, list_data_get, degree, direction, direction_item, weight);
eina_list_free(items);
return ret;
}
if (!elm_widget_disabled_get(obj))
{
- items = eina_list_append(items, _pd->dec_button);
- items = eina_list_append(items, _pd->inc_button);
+ items = eina_list_append(items, _pd->dec_button);
if (_pd->entry_visible)
items = eina_list_append(items, _pd->ent);
else
- //TIZEN_ONLY(20160623): Add entry visible, focus check flag for reactivating entry.
{
if (_pd->entry_reactivate) _pd->entry_reactivate = EINA_FALSE;
items = eina_list_append(items, _pd->text_button);
}
- //items = eina_list_append(items, _pd->text_button);
- //
+ items = eina_list_append(items, _pd->inc_button);
}
return elm_widget_focus_list_next_get
(obj, items, eina_list_data_get, dir, next, next_item);
eo_do(obj,
evas_obj_type_set(MY_CLASS_NAME_LEGACY),
evas_obj_smart_callbacks_descriptions_set(_smart_callbacks),
- elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_SPIN_BUTTON));
+ elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_FILLER));
return obj;
}
_elm_spinner_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Spinner_Data *sd EINA_UNUSED)
{
static Elm_Atspi_Action atspi_actions[] = {
- { "spin,left", "spin", "left", _key_action_spin},
- { "spin,right", "spin", "right", _key_action_spin},
- { "spin,up", "spin", "up", _key_action_spin},
- { "spin,down", "spin", "down", _key_action_spin},
{ "toggle", "toggle", NULL, _key_action_toggle},
{ NULL, NULL, NULL, NULL }
};