forked from enlightenment/efl
atspi: add atspi bridge ready event
Summary: calling elm_init does not guarantee of readiness of atspi bridge even though elm_init is calling _elm_atspi_bridge_init. widget or user could want to know when the atspi bridge is ready. Reviewers: Hermet, jsuya, herb Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12283
This commit is contained in:
parent
bc48081c93
commit
45aeaa6750
|
@ -118,6 +118,8 @@ struct collection_match_rule {
|
|||
static Eo *_instance;
|
||||
static int _init_count = 0;
|
||||
|
||||
EAPI int ELM_EVENT_ATSPI_BRIDGE_STATE_CHANGED = -1;
|
||||
|
||||
// Object Event handlers
|
||||
static void _state_changed_signal_send(void *data, const Efl_Event *event);
|
||||
static void _bounds_changed_signal_send(void *data, const Efl_Event *event);
|
||||
|
@ -4305,6 +4307,7 @@ end:
|
|||
static void
|
||||
_registered_listeners_get(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||
{
|
||||
Elm_Event_Atspi_Bridge_State_Changed *e;
|
||||
const char *event, *bus;
|
||||
ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(data, pd);
|
||||
pd->pending_requests = eina_list_remove(pd->pending_requests, pending);
|
||||
|
@ -4335,7 +4338,16 @@ _registered_listeners_get(void *data, const Eldbus_Message *msg, Eldbus_Pending
|
|||
}
|
||||
|
||||
if (!pd->connected)
|
||||
efl_event_callback_legacy_call(data, ELM_ATSPI_BRIDGE_EVENT_CONNECTED, NULL);
|
||||
{
|
||||
efl_event_callback_legacy_call(data, ELM_ATSPI_BRIDGE_EVENT_CONNECTED, NULL);
|
||||
e = calloc(1, sizeof(Elm_Event_Atspi_Bridge_State_Changed));
|
||||
if (e)
|
||||
{
|
||||
e->state = ELM_ATSPI_BRIDGE_CONNECTED;
|
||||
ecore_event_add(ELM_EVENT_ATSPI_BRIDGE_STATE_CHANGED, e, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
pd->connected = EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -4810,6 +4822,7 @@ _interfaces_unregister(Eo *bridge)
|
|||
static void
|
||||
_a11y_connection_shutdown(Eo *bridge)
|
||||
{
|
||||
Elm_Event_Atspi_Bridge_State_Changed *e;
|
||||
ELM_ATSPI_BRIDGE_DATA_GET_OR_RETURN(bridge, pd);
|
||||
Eldbus_Pending *pending;
|
||||
|
||||
|
@ -4852,6 +4865,13 @@ _a11y_connection_shutdown(Eo *bridge)
|
|||
pd->event_hdlr = NULL;
|
||||
|
||||
efl_event_callback_legacy_call(bridge, ELM_ATSPI_BRIDGE_EVENT_DISCONNECTED, NULL);
|
||||
e = calloc(1, sizeof(Elm_Event_Atspi_Bridge_State_Changed));
|
||||
if (e)
|
||||
{
|
||||
e->state = ELM_ATSPI_BRIDGE_DISCONNECTED;
|
||||
ecore_event_add(ELM_EVENT_ATSPI_BRIDGE_STATE_CHANGED, e, NULL, NULL);
|
||||
}
|
||||
|
||||
pd->connected = EINA_FALSE;
|
||||
}
|
||||
|
||||
|
|
|
@ -491,6 +491,28 @@ typedef enum
|
|||
ELM_FOCUS_REGION_SHOW_ITEM /**< As an item. */
|
||||
} Elm_Focus_Region_Show_Mode;
|
||||
|
||||
/** Possible values for the atspi bridge state.
|
||||
*
|
||||
* @since 1.26
|
||||
*
|
||||
* @ingroup Elm_Atspi_Bridge
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ELM_ATSPI_BRIDGE_CONNECTED = 0, /**< when atspi bridge is ready */
|
||||
ELM_ATSPI_BRIDGE_DISCONNECTED, /**< when atspi bridge is shutdown */
|
||||
} Elm_Atspi_Bridge_State;
|
||||
|
||||
/** Data on event when atspi bridge state is changed
|
||||
*
|
||||
* @since 1.26
|
||||
*
|
||||
* @ingroup Elm_Atspi_Bridge
|
||||
*/
|
||||
typedef struct _Elm_Event_Atspi_Bridge_State_Changed
|
||||
{
|
||||
Elm_Atspi_Bridge_State state;
|
||||
} Elm_Event_Atspi_Bridge_State_Changed;
|
||||
|
||||
/**************************************************************************/
|
||||
EAPI extern int ELM_ECORE_EVENT_ETHUMB_CONNECT;
|
||||
|
@ -520,6 +542,12 @@ EAPI extern int ELM_EVENT_PROCESS_BACKGROUND;
|
|||
*/
|
||||
EAPI extern int ELM_EVENT_PROCESS_FOREGROUND;
|
||||
|
||||
/**
|
||||
* Emitted when atspi bridge state is changed.
|
||||
* @since 1.26
|
||||
*/
|
||||
EAPI extern int ELM_EVENT_ATSPI_BRIDGE_STATE_CHANGED;
|
||||
|
||||
typedef Eina_Bool (*Elm_Event_Cb)(void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */
|
||||
|
||||
EAPI extern double _elm_startup_time;
|
||||
|
|
|
@ -438,6 +438,7 @@ elm_init(int argc, char **argv)
|
|||
ecore_event_handler_add(ECORE_EVENT_LOCALE_CHANGED, _sys_lang_changed, NULL);
|
||||
|
||||
ELM_CNP_EVENT_SELECTION_CHANGED = ecore_event_type_new();
|
||||
ELM_EVENT_ATSPI_BRIDGE_STATE_CHANGED = ecore_event_type_new();
|
||||
|
||||
if (_elm_config->atspi_mode != ELM_ATSPI_MODE_OFF)
|
||||
_elm_atspi_bridge_init();
|
||||
|
|
Loading…
Reference in New Issue