From f68ee355b8bf6ba0b8e2f97698f4200da873100a Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Fri, 12 May 2017 13:37:11 +0200
Subject: [PATCH] atspi: send window activated event to at_spi2 only once per
session
Change-Id: I11847c526879124e2340570291221caed19a9bbe
---
src/lib/elm_atspi_bridge.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 9c5fd78..b58b4dc 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -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);
--
2.7.4