atspi: reduce IPC of object:state-changed:showing 81/103881/3
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 9 Dec 2016 07:18:56 +0000 (16:18 +0900)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Tue, 13 Dec 2016 00:59:14 +0000 (16:59 -0800)
Send interested signal only

Change-Id: I58f56a6330148e8d7eadaa59c8f0c85459750e07

src/lib/elc_naviframe.c
src/lib/elm_atspi_bridge.c

index 81124ef..7b80aae 100644 (file)
@@ -1363,14 +1363,13 @@ _item_new(Evas_Object *obj,
 
    //item base layout
    VIEW(it) = elm_layout_add(obj);
+   eo_do(VIEW(it), elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PAGE_TAB));
+   eo_do(VIEW(it), elm_interface_atspi_accessible_name_set((char*)title_label));
    evas_object_smart_member_add(VIEW(it), obj);
 
    if (!elm_widget_sub_object_add(obj, VIEW(it)))
      ERR("could not add %p as sub object of %p", VIEW(it), obj);
 
-   eo_do(VIEW(it), elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PAGE_TAB));
-   eo_do(VIEW(it), elm_interface_atspi_accessible_name_set((char*)title_label));
-
    evas_object_event_callback_add
      (VIEW(it), EVAS_CALLBACK_CHANGED_SIZE_HINTS,
      _on_item_size_hints_changed, obj);
index aefe2d7..3a40f93 100644 (file)
@@ -4054,6 +4054,31 @@ _state_changed_signal_send(void *data, Eo *obj EINA_UNUSED, const Eo_Event_Descr
         pd->window_activated = state_data->new_value;
      }
    //
+   // TIZEN_ONLY(20161209): reduce IPC of object:state-changed:showing
+   if ((state_data->type == ELM_ATSPI_STATE_SHOWING) ||
+       (state_data->type == ELM_ATSPI_STATE_VISIBLE))
+     {
+        Elm_Atspi_Role role = ELM_ATSPI_ROLE_INVALID;
+        Elm_Atspi_State_Set ss = NULL;
+
+        eo_do(obj, role = elm_interface_atspi_accessible_role_get());
+        eo_do(obj, ss = elm_interface_atspi_accessible_state_set_get());
+        if (state_data->new_value) /* Showing */
+          {
+             if ((role != ELM_ATSPI_ROLE_WINDOW) &&
+                 (role != ELM_ATSPI_ROLE_PAGE_TAB) &&
+                 (!STATE_TYPE_GET(ss, ELM_ATSPI_STATE_MODAL)))
+               return EINA_FALSE;
+          }
+        else /* Not Showing */
+          {
+             if ((role != ELM_ATSPI_ROLE_WINDOW) &&
+                 (!STATE_TYPE_GET(ss, ELM_ATSPI_STATE_MODAL)) &&
+                 (_elm_object_accessibility_currently_highlighted_get() != (void *)obj))
+               return EINA_FALSE;
+          }
+     }
+   //
 
    if (!STATE_TYPE_GET(pd->object_state_broadcast_mask, state_data->type))
      return EINA_FALSE;