atspi: send window activated event to at_spi2 only once per session 79/132479/2
authorPaweł Stawicki <p.stawicki@partner.samsung.com>
Fri, 12 May 2017 11:37:11 +0000 (13:37 +0200)
committerShinwoo Kim <cinoo.kim@samsung.com>
Thu, 29 Jun 2017 00:50:41 +0000 (00:50 +0000)
Change-Id: I11847c526879124e2340570291221caed19a9bbe

src/lib/elm_atspi_bridge.c

index 9c5fd78..b58b4dc 100644 (file)
@@ -120,7 +120,8 @@ typedef struct _Elm_Atspi_Bridge_Data
    Eina_Bool connected : 1;
    // TIZEN_ONLY(20160802): do not handle events if the window is not activated
    Eina_Bool window_activated : 1;
-   //
+   // TIZEN_ONLY(20170512): send window activated event to at_spi2 only once per session
+   Eina_Bool window_activated_broadcast_needed : 1;
    //TIZEN_ONLY(20161027) - Export elm_atspi_bridge_utils_is_screen_reader_enabled
    Eina_Bool screen_reader_enabled : 1;
    //
@@ -5829,14 +5830,24 @@ _bridge_cache_build(Eo *bridge, void *obj)
      {
         if (STATE_TYPE_GET(ss, ELM_ATSPI_STATE_ACTIVE))
           {
-             _window_signal_send(bridge, obj, ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_ACTIVATED, NULL);
+             // TIZEN_ONLY(20170512): send window activated event to at_spi2 only once per session
+             if(pd->window_activated_broadcast_needed)
+               {
+                  _window_signal_send(bridge, obj, ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_ACTIVATED, NULL);
+                  pd->window_activated_broadcast_needed = EINA_FALSE;
+               }
              // TIZEN_ONLY(20160802): do not handle events if the window is not activated
              pd->window_activated = EINA_TRUE;
              //
           }
         else
           {
-             _window_signal_send(bridge, obj, ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED, NULL);
+             // TIZEN_ONLY(20170512): send window activated event to at_spi2 only once per session
+             if(pd->window_activated_broadcast_needed)
+               {
+                  _window_signal_send(bridge, obj, ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED, NULL);
+                  pd->window_activated_broadcast_needed = EINA_FALSE;
+               }
              // TIZEN_ONLY(20160802): do not handle events if the window is not activated
              pd->window_activated = EINA_FALSE;
              //
@@ -6044,6 +6055,9 @@ static void _a11y_connection_init(Eo *bridge)
 
    if (is_connected) return;
 
+   // TIZEN_ONLY(20170512): send window activated event to at_spi2 only once per session
+   pd->window_activated_broadcast_needed = EINA_TRUE;
+
    Eldbus_Message *m = eldbus_object_method_call_new(pd->bus_obj, A11Y_DBUS_INTERFACE, "GetAddress");
    Eldbus_Pending *p = eldbus_object_send(pd->bus_obj, m, _a11y_bus_address_get, bridge, 100);