atspi: handle state change notifications in on_focus function

This commit is contained in:
Lukasz Stanislawski 2015-05-13 09:57:16 +02:00
parent 8d1a238d1c
commit c306271bc3
3 changed files with 12 additions and 9 deletions

View File

@ -1099,6 +1099,8 @@ _elm_entry_elm_widget_on_focus(Eo *obj, Elm_Entry_Data *sd)
!edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text"))
elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
evas_object_smart_callback_call(obj, SIG_FOCUSED, NULL);
if (_elm_config->atspi_mode)
elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
_return_key_enabled_check(obj);
_validate(obj);
}
@ -1110,6 +1112,8 @@ _elm_entry_elm_widget_on_focus(Eo *obj, Elm_Entry_Data *sd)
!edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text"))
elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF);
evas_object_smart_callback_call(obj, SIG_UNFOCUSED, NULL);
if (_elm_config->atspi_mode)
elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
if (_elm_config->selection_clear_enable)
{

View File

@ -406,12 +406,16 @@ _elm_layout_elm_widget_on_focus(Eo *obj, Elm_Layout_Smart_Data *_pd EINA_UNUSED)
elm_layout_signal_emit(obj, "elm,action,focus", "elm");
evas_object_focus_set(wd->resize_obj, EINA_TRUE);
evas_object_smart_callback_call(obj, SIG_LAYOUT_FOCUSED, NULL);
if (_elm_config->atspi_mode)
elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
}
else
{
elm_layout_signal_emit(obj, "elm,action,unfocus", "elm");
evas_object_focus_set(wd->resize_obj, EINA_FALSE);
evas_object_smart_callback_call(obj, SIG_LAYOUT_UNFOCUSED, NULL);
if (_elm_config->atspi_mode)
elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
}
return EINA_TRUE;

View File

@ -5430,13 +5430,6 @@ elm_widget_tree_dot_dump(const Evas_Object *top,
#endif
}
static void
_on_focus_change(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Eina_Bool val = data ? EINA_TRUE : EINA_FALSE;
elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_FOCUSED, val);
}
EOLIAN static void
_elm_widget_eo_base_constructor(Eo *obj, Elm_Widget_Smart_Data *sd)
{
@ -5452,8 +5445,6 @@ _elm_widget_eo_base_constructor(Eo *obj, Elm_Widget_Smart_Data *sd)
sd->on_create = EINA_FALSE;
sd->role = ELM_ATSPI_ROLE_UNKNOWN;
evas_object_smart_callback_add(obj, "focused", _on_focus_change, (void*)1);
evas_object_smart_callback_add(obj, "unfocused", _on_focus_change, NULL);
}
EOLIAN static void
@ -5479,12 +5470,16 @@ _elm_widget_on_focus(Eo *obj, Elm_Widget_Smart_Data *sd)
if (!sd->resize_obj)
evas_object_focus_set(obj, EINA_TRUE);
evas_object_smart_callback_call(obj, SIG_WIDGET_FOCUSED, NULL);
if (_elm_config->atspi_mode)
elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
}
else
{
if (!sd->resize_obj)
evas_object_focus_set(obj, EINA_FALSE);
evas_object_smart_callback_call(obj, SIG_WIDGET_UNFOCUSED, NULL);
if (_elm_config->atspi_mode)
elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
}
}
else