From a873c720d50a6b132598a2676a8d05f9af213b40 Mon Sep 17 00:00:00 2001 From: Zbigniew Kosinski Date: Thu, 12 Jun 2014 12:57:54 +0900 Subject: [PATCH] atspi: checked state for elm_check added Reviewers: stanluk Differential Revision: https://phab.enlightenment.org/D1000 --- src/lib/elm_atspi_bridge.c | 5 +++++ src/lib/elm_check.c | 28 ++++++++++++++++++++++++++++ src/lib/elm_check.eo | 1 + 3 files changed, 34 insertions(+) diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c index c1f1ad50c..83f7415c6 100644 --- a/src/lib/elm_atspi_bridge.c +++ b/src/lib/elm_atspi_bridge.c @@ -2569,6 +2569,8 @@ _set_broadcast_flag(const char *event) STATE_TYPE_SET(_object_state_broadcast_mask, ATSPI_STATE_FOCUSED); else if (!strcmp(tokens[2], "Showing")) STATE_TYPE_SET(_object_state_broadcast_mask, ATSPI_STATE_SHOWING); + else if (!strcmp(tokens[2], "Checked")) + STATE_TYPE_SET(_object_state_broadcast_mask, ATSPI_STATE_CHECKED); } else if (!strcmp(tokens[1], "PropertyChange")) { @@ -2699,6 +2701,9 @@ _state_changed_signal_send(void *data, Eo *obj EINA_UNUSED, const Eo_Event_Descr case ELM_ATSPI_STATE_ACTIVE: type_desc = "active"; break; + case ELM_ATSPI_STATE_CHECKED: + type_desc = "checked"; + break; default: return EINA_FALSE; } diff --git a/src/lib/elm_check.c b/src/lib/elm_check.c index a72ee401a..f26ef4aaf 100644 --- a/src/lib/elm_check.c +++ b/src/lib/elm_check.c @@ -71,6 +71,11 @@ _activate(Evas_Object *obj) } evas_object_smart_callback_call(obj, SIG_CHANGED, NULL); + + if (_elm_config->atspi_mode) + elm_interface_atspi_accessible_state_changed_signal_emit(obj, + ELM_ATSPI_STATE_CHECKED, + sd->state); } /* FIXME: replicated from elm_layout just because check's icon spot @@ -89,6 +94,19 @@ _icon_signal_emit(Evas_Object *obj) edje_object_message_signal_process(wd->resize_obj); } +EOLIAN static Elm_Atspi_State_Set +_elm_check_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Check_Data *_pd EINA_UNUSED) +{ + Elm_Atspi_State_Set states = 0; + + eo_do_super(obj, ELM_CHECK_CLASS, states = elm_interface_atspi_accessible_state_set_get()); + + if (elm_check_state_get(obj)) + STATE_TYPE_SET(states, ELM_ATSPI_STATE_CHECKED); + + return states; +} + /* FIXME: replicated from elm_layout just because check's icon spot * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we * can changed the theme API */ @@ -259,6 +277,11 @@ _on_check_off(void *data, elm_layout_signal_emit(obj, "elm,state,check,off", "elm"); evas_object_smart_callback_call(data, SIG_CHANGED, NULL); + + if (_elm_config->atspi_mode) + elm_interface_atspi_accessible_state_changed_signal_emit(data, + ELM_ATSPI_STATE_CHECKED, + sd->state); } static void @@ -275,6 +298,11 @@ _on_check_on(void *data, if (sd->statep) *sd->statep = sd->state; elm_layout_signal_emit(obj, "elm,state,check,on", "elm"); evas_object_smart_callback_call(data, SIG_CHANGED, NULL); + + if (_elm_config->atspi_mode) + elm_interface_atspi_accessible_state_changed_signal_emit(data, + ELM_ATSPI_STATE_CHECKED, + sd->state); } static void diff --git a/src/lib/elm_check.eo b/src/lib/elm_check.eo index f066d0b13..be92e9146 100644 --- a/src/lib/elm_check.eo +++ b/src/lib/elm_check.eo @@ -58,6 +58,7 @@ class Elm_Check (Elm_Layout) Elm_Layout::text_aliases::get; Elm_Layout::content_aliases::get; Elm_Layout::sizing_eval; + Elm_Interface_Atspi_Accessible::state_set::get; } events { changed; -- 2.34.1