atspi: checked state for elm_check added
authorZbigniew Kosinski <z.kosinski@samsung.com>
Thu, 12 Jun 2014 03:57:54 +0000 (12:57 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 12 Jun 2014 03:57:55 +0000 (12:57 +0900)
Reviewers: stanluk

Differential Revision: https://phab.enlightenment.org/D1000

src/lib/elm_atspi_bridge.c
src/lib/elm_check.c
src/lib/elm_check.eo

index c1f1ad5..83f7415 100644 (file)
@@ -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;
    }
index a72ee40..f26ef4a 100644 (file)
@@ -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
index f066d0b..be92e91 100644 (file)
@@ -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;