cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d9889062d89bc8a7e4c58ec91dd0ba30eb271524

commit d9889062d89bc8a7e4c58ec91dd0ba30eb271524
Author: Shilpa Singh <shilpa.si...@samsung.com>
Date:   Mon Jun 27 11:30:01 2016 -0700

    elm_atspi_bridge: add bounds-changed signal sending code.
    
    Summary:
    Add bounds-changed signal, this signal can be sent on geometry change
    of any evas object when atspi mode is enabled.
    
    Test Plan:
    connect to "object:bounds-changed" signal on screen-reader.
    when signal BoundsChanged is emitted from elm using 
elm_interface_atspi_accessible_bounds_changed_signal_emit, the signal should be 
received
    and we should be able to access geometry.
    
    Signed-off-by: Shilpa Singh <shilpa.si...@samsung.com>
    
    Reviewers: cedric, lukasz.stanislawski, kimcinoo
    
    Subscribers: govi, rajeshps, cedric, jpeg
    
    Differential Revision: https://phab.enlightenment.org/D4100
    
    Signed-off-by: Cedric Bail <ced...@osg.samsung.com>
---
 src/lib/elementary/elm_atspi_bridge.c                | 16 +++++++++++++++-
 src/lib/elementary/elm_interface_atspi_accessible.eo |  9 +++++++++
 src/lib/elementary/elm_interface_atspi_accessible.h  |  9 +++++++++
 3 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_atspi_bridge.c 
b/src/lib/elementary/elm_atspi_bridge.c
index caf2c39..8ba97c2 100644
--- a/src/lib/elementary/elm_atspi_bridge.c
+++ b/src/lib/elementary/elm_atspi_bridge.c
@@ -116,6 +116,7 @@ static int _init_count = 0;
 
 // Object Event handlers
 static void _state_changed_signal_send(void *data, const Eo_Event *event);
+static void _bounds_changed_signal_send(void *data, const Eo_Event *event);
 static void _property_changed_signal_send(void *data, const Eo_Event *event);
 static void _children_changed_signal_send(void *data, const Eo_Event *event);
 static void _window_signal_send(void *data, const Eo_Event *event);
@@ -150,6 +151,7 @@ typedef struct {
 static const Elm_Atspi_Bridge_Event_Handler event_handlers[] = {
    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, 
_children_changed_signal_send},
    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_PROPERTY_CHANGED, 
_property_changed_signal_send},
+   { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_BOUNDS_CHANGED, 
_bounds_changed_signal_send},
    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_STATE_CHANGED, 
_state_changed_signal_send},
    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_VISIBLE_DATA_CHANGED, 
_visible_data_changed_signal_send},
    { ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_ACTIVE_DESCENDANT_CHANGED, 
_active_descendant_changed_signal_send},
@@ -234,7 +236,7 @@ enum _Atspi_Window_Signals
 
 static const Eldbus_Signal _event_obj_signals[] = {
    [ATSPI_OBJECT_EVENT_PROPERTY_CHANGED] = {"PropertyChange", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
-   [ATSPI_OBJECT_EVENT_BOUNDS_CHANGED] = {"BoundsChange", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
+   [ATSPI_OBJECT_EVENT_BOUNDS_CHANGED] = {"BoundsChanged", 
ELDBUS_ARGS({"siiv(iiii)", NULL}), 0},
    [ATSPI_OBJECT_EVENT_LINK_SELECTED] = {"LinkSelected", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
    [ATSPI_OBJECT_EVENT_STATE_CHANGED] = {"StateChanged", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
    [ATSPI_OBJECT_EVENT_CHILDREN_CHANGED] = {"ChildrenChanged", 
ELDBUS_ARGS({"siiv(so)", NULL}), 0},
@@ -3718,6 +3720,8 @@ _set_broadcast_flag(const char *event, Eo *bridge)
           STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_ACTIVE_DESCENDANT_CHANGED);
         else if (!strcmp(tokens[1], "SelectionChanged"))
           STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_SELECTION_CHANGED);
+        else if (!strcmp(tokens[1], "BoundsChanged"))
+          STATE_TYPE_SET(pd->object_broadcast_mask, 
ATSPI_OBJECT_EVENT_BOUNDS_CHANGED);
      }
    else if (!strcmp(tokens[0], "Window"))
      {
@@ -3826,6 +3830,16 @@ _state_changed_signal_send(void *data, const Eo_Event 
*event)
 }
 
 static void
+_bounds_changed_signal_send(void *data, const Eo_Event *event)
+{
+   Elm_Atspi_Event_Geometry_Changed_Data *geo_data = event->info;
+
+   _bridge_signal_send(data, event->object, ATSPI_DBUS_INTERFACE_EVENT_OBJECT,
+                       &_event_obj_signals[ATSPI_OBJECT_EVENT_BOUNDS_CHANGED], 
"", 0, 0, "(iiii)",
+                       geo_data->x, geo_data->y, geo_data->width, 
geo_data->height);
+}
+
+static void
 _property_changed_signal_send(void *data, const Eo_Event *event)
 {
    const char *property = event->info;
diff --git a/src/lib/elementary/elm_interface_atspi_accessible.eo 
b/src/lib/elementary/elm_interface_atspi_accessible.eo
index c178a23..a1b89a1 100644
--- a/src/lib/elementary/elm_interface_atspi_accessible.eo
+++ b/src/lib/elementary/elm_interface_atspi_accessible.eo
@@ -202,6 +202,14 @@ struct Elm.Atspi.Event.State_Changed.Data
    new_value: bool;
 }
 
+struct Elm.Atspi.Event.Geometry_Changed.Data
+{
+   x: int;
+   y: int;
+   width: int;
+   height: int;
+}
+
 struct Elm.Atspi.Event.Children_Changed.Data
 {
    is_added: bool;
@@ -430,6 +438,7 @@ mixin Elm.Interface.Atspi_Accessible ()
       property,changed: string;
       children,changed: Elm.Atspi.Event.Children_Changed.Data;
       state,changed: Elm.Atspi.Event.State_Changed.Data;
+      bounds,changed: Elm.Atspi.Event.Geometry_Changed.Data;
       visible,data,changed;
       active,descendant,changed;
       added;
diff --git a/src/lib/elementary/elm_interface_atspi_accessible.h 
b/src/lib/elementary/elm_interface_atspi_accessible.h
index 51f03e2..929216b 100644
--- a/src/lib/elementary/elm_interface_atspi_accessible.h
+++ b/src/lib/elementary/elm_interface_atspi_accessible.h
@@ -79,6 +79,15 @@ EAPI Elm_Atspi_Relation_Set 
elm_atspi_relation_set_clone(const Elm_Atspi_Relatio
    } while(0); }
 
 /**
+ * Emits ATSPI 'BoundsChanged' dbus signal.
+ */
+#define elm_interface_atspi_accessible_bounds_changed_signal_emit(obj, x, y, 
width, height) \
+   do { \
+         Elm_Atspi_Event_Geometry_Changed_Data evinfo = { x, y, width, height 
}; \
+         
elm_interface_atspi_accessible_event_emit(ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN, 
obj, ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_BOUNDS_CHANGED, (void*)&evinfo); \
+   } while(0);
+
+/**
  * Emits ATSPI 'PropertyChanged' dbus signal for 'Name' property.
  */
 #define elm_interface_atspi_accessible_name_changed_signal_emit(obj) \

-- 


Reply via email to