atspi: use detail value of window activated signal 11/152311/3
authorShinwoo Kim <cinoo.kim@samsung.com>
Mon, 25 Sep 2017 13:57:02 +0000 (22:57 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Wed, 27 Sep 2017 09:51:18 +0000 (09:51 +0000)
The detail value of window activated signal is using for following cases

(1) support "default_label" attribute of window
(2) notify existing keyboard window.
The keyboard window would exist always, once it shows.
So if screen-reader turns off, and turn on again, there was no ATSPI signal.
We are using 'activate' signal for this case to get the reference of
keyboard window. And we are using detail value to reduce a call of IPC.

Change-Id: I11db347b89f283ad2ab7fd5378ca123948dbbaf5

src/lib/elm_atspi_bridge.c
src/lib/elm_win.c

index 564b67fc3e3fe513f62d1b6fce4b56c38e8ff068..88e1e0dce145787d7f05c3df9ef10a40b8ccd133 100644 (file)
@@ -218,11 +218,14 @@ static const Elm_Atspi_Bridge_Event_Handler event_handlers[] = {
    //
 };
 
+//TIZEN_ONLY(20170925) atspi: send detail value for window activated signal
 enum
 {
-  ELM_ACCESSIBLE_DEFAULT_LABEL_ENABLED = 0,
-  ELM_ACCESSIBLE_DEFAULT_LABEL_DISABLED = 1 << 0,
+  ELM_ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED = 0,
+  ELM_ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_DISABLED = 1 << 0,
+  ELM_ACCESSIBLE_WINDOW_ACTIVATE_INFO_KEYBOARD = 1 << 1,
 };
+//
 
 enum _Atspi_Object_Child_Event_Type
 {
@@ -5709,10 +5712,11 @@ _move_outed_signal_send(void *data, Eo *obj EINA_UNUSED, const Eo_Event_Descript
 }
 //
 
+//TIZEN_ONLY(20170925) atspi: send detail value for window activated signal
 static unsigned int
 _window_activated_detail_value_add(Eo *obj)
 {
-   unsigned int ret = ELM_ACCESSIBLE_DEFAULT_LABEL_ENABLED;
+   unsigned int ret = ELM_ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED;
    Eina_List *l, *attr_list = NULL;
    Elm_Atspi_Attribute *attr = NULL;
 
@@ -5721,15 +5725,20 @@ _window_activated_detail_value_add(Eo *obj)
      {
         if (!strcmp(attr->key, "default_label") && !strcmp(attr->value, "disabled"))
           {
-             ret |= ELM_ACCESSIBLE_DEFAULT_LABEL_DISABLED;
+             ret |= ELM_ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_DISABLED;
              break;
           }
      }
    if (attr_list)
      elm_atspi_attributes_list_free(attr_list);
 
+   Elm_Atspi_Role role = ELM_ATSPI_ROLE_INVALID;
+   eo_do(obj, role = elm_interface_atspi_accessible_role_get());
+   if (role == ELM_ATSPI_ROLE_INPUT_METHOD_WINDOW)
+     ret |= ELM_ACCESSIBLE_WINDOW_ACTIVATE_INFO_KEYBOARD;
    return ret;
 }
+//
 
 static Eina_Bool
 _window_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info EINA_UNUSED)
@@ -5764,9 +5773,11 @@ _window_signal_send(void *data, Eo *obj, const Eo_Event_Description *desc, void
         return EINA_FALSE;
      }
 
+   //TIZEN_ONLY(20170925) atspi: send detail value for window activated signal
    unsigned int det1 = 0;
    if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_ACTIVATED)
      det1 = _window_activated_detail_value_add(obj);
+   //
 
    _bridge_signal_send(data, obj, ATSPI_DBUS_INTERFACE_EVENT_WINDOW,
                        &_window_obj_signals[type], "", det1, 0, "i", 0);
index 3a22c845a01aa0b8673560df6e24cb8826d40b60..39f446b1ace5c3988b302e94c1473d67c6a73b28 100644 (file)
@@ -3110,6 +3110,16 @@ _elm_win_atspi(Eina_Bool is_atspi)
                   elm_interface_atspi_window_activated_signal_emit(obj);
                   elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_ACTIVE, EINA_TRUE);
                }
+             else
+               {
+                  Elm_Atspi_Role role;
+                  eo_do(obj, role = elm_interface_atspi_accessible_role_get());
+                  if (role == ELM_ATSPI_ROLE_INPUT_METHOD_WINDOW)
+                    {
+                       elm_interface_atspi_window_activated_signal_emit(obj);
+                       elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_ACTIVE, EINA_TRUE);
+                    }
+               }
           }
 
         elm_widget_atspi(obj, is_atspi);