EO_CALLBACKS_ARRAY_DEFINE(_window_cb,
{ ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED, _window_signal_send},
+ { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DESTROYED, _window_signal_send},
{ ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_ACTIVATED, _window_signal_send},
- { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED, _window_signal_send}
+ { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED, _window_signal_send},
+ { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MAXIMIZED, _window_signal_send},
+ { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MINIMIZED, _window_signal_send},
+ { ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_RESTORED, _window_signal_send}
);
EO_CALLBACKS_ARRAY_DEFINE(_selection_cb,
_window_signal_broadcast_mask = -1; // broadcast all
else if (!strcmp(tokens[1], "Create"))
STATE_TYPE_SET(_window_signal_broadcast_mask, ATSPI_WINDOW_EVENT_CREATE);
+ else if (!strcmp(tokens[1], "Destroy"))
+ STATE_TYPE_SET(_window_signal_broadcast_mask, ATSPI_WINDOW_EVENT_DESTROY);
else if (!strcmp(tokens[1], "Activate"))
STATE_TYPE_SET(_window_signal_broadcast_mask, ATSPI_WINDOW_EVENT_ACTIVATE);
else if (!strcmp(tokens[1], "Deactivate"))
STATE_TYPE_SET(_window_signal_broadcast_mask, ATSPI_WINDOW_EVENT_DEACTIVATE);
+ else if (!strcmp(tokens[1], "Maximize"))
+ STATE_TYPE_SET(_window_signal_broadcast_mask, ATSPI_WINDOW_EVENT_MAXIMIZE);
+ else if (!strcmp(tokens[1], "Minimize"))
+ STATE_TYPE_SET(_window_signal_broadcast_mask, ATSPI_WINDOW_EVENT_MINIMIZE);
+ else if (!strcmp(tokens[1], "Resize"))
+ STATE_TYPE_SET(_window_signal_broadcast_mask, ATSPI_WINDOW_EVENT_RESIZE);
+ else if (!strcmp(tokens[1], "Restore"))
+ STATE_TYPE_SET(_window_signal_broadcast_mask, ATSPI_WINDOW_EVENT_RESTORE);
}
free(tokens[0]);
static Eina_Bool
_window_signal_send(void *data, Eo *obj EINA_UNUSED, const Eo_Event_Description *desc, void *event_info EINA_UNUSED)
{
- const char *event_desc;
Eldbus_Service_Interface *window = data;
enum _Atspi_Window_Signals type;
if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED)
- {
- event_desc = "Created";
- type = ATSPI_WINDOW_EVENT_CREATE;
- }
+ type = ATSPI_WINDOW_EVENT_CREATE;
+ else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DESTROYED)
+ type = ATSPI_WINDOW_EVENT_DESTROY;
else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED)
- {
- event_desc = "Deactivate";
- type = ATSPI_WINDOW_EVENT_DEACTIVATE;
- }
+ type = ATSPI_WINDOW_EVENT_DEACTIVATE;
else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_ACTIVATED)
- {
- event_desc = "Activate";
- type = ATSPI_WINDOW_EVENT_ACTIVATE;
- }
+ type = ATSPI_WINDOW_EVENT_ACTIVATE;
+ else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MAXIMIZED)
+ type = ATSPI_WINDOW_EVENT_MAXIMIZE;
+ else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MINIMIZED)
+ type = ATSPI_WINDOW_EVENT_MINIMIZE;
+ else if (desc == ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_RESTORED)
+ type = ATSPI_WINDOW_EVENT_RESTORE;
else
- {
- WRN("ATSPI Window event not handled");
- return EINA_FALSE;
- }
+ return EINA_FALSE;
if (!STATE_TYPE_GET(_window_signal_broadcast_mask, type))
return EINA_FALSE;
return EINA_FALSE;
}
- _object_signal_send(window, type, event_desc, 0, 0, "i", 0);
+ _object_signal_send(window, type, "", 0, 0, "i", 0);
- DBG("signal sent Window:%s", event_desc);
+ DBG("sent signal org.a11y.atspi.Window:%d", type);
return EINA_TRUE;
}
{
events {
window,created; /*@ Called when new window has been created. */
- window,activated; /*@ Called when new window has been activated. (unfocused) */
- window,deactivated; /*@ Called when new window has been deactivated (unfocused). */
+ window,destroyed; /*@ Called when window has been destroyed. */
+ window,activated; /*@ Called when window has been activated. (unfocused) */
+ window,deactivated; /*@ Called when window has been deactivated (unfocused). */
+ window,maximized; /* @ Called when window has been maximmized */
+ window,minimized; /* @ Called when window has been minimized */
+ window,restored; /* @ Called when window has been restored */
}
}
edje_object_signal_emit(sd->frame_obj, "elm,action,focus", "elm");
}
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_ACTIVATED, NULL));
+
/* do nothing */
/* else if (sd->img_obj) */
/* { */
/* access */
_elm_access_object_highlight_disable(evas_object_evas_get(obj));
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DEACTIVATED, NULL));
+
/* do nothing */
/* if (sd->img_obj) */
/* { */
if (sd->withdrawn)
evas_object_smart_callback_call(obj, SIG_WITHDRAWN, NULL);
else if (sd->iconified)
- evas_object_smart_callback_call(obj, SIG_ICONIFIED, NULL);
+ {
+ evas_object_smart_callback_call(obj, SIG_ICONIFIED, NULL);
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MINIMIZED, NULL));
+ }
else
- evas_object_smart_callback_call(obj, SIG_NORMAL, NULL);
+ {
+ evas_object_smart_callback_call(obj, SIG_NORMAL, NULL);
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_RESTORED, NULL));
+ }
}
if (ch_sticky)
{
if (ch_maximized)
{
if (sd->maximized)
- evas_object_smart_callback_call(obj, SIG_MAXIMIZED, NULL);
+ {
+ evas_object_smart_callback_call(obj, SIG_MAXIMIZED, NULL);
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_MAXIMIZED, NULL));
+ }
else
- evas_object_smart_callback_call(obj, SIG_UNMAXIMIZED, NULL);
+ {
+ evas_object_smart_callback_call(obj, SIG_UNMAXIMIZED, NULL);
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_RESTORED, NULL));
+ }
}
if (ch_profile)
{
TRAP(sd, show);
if (sd->shot.info) _shot_handle(sd);
+
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED, NULL));
}
EOLIAN static void
ecore_evas_hide(sd->pointer.ee);
#endif
}
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DESTROYED, NULL));
}
static void
evas_object_ref(obj);
evas_object_smart_callback_call(obj, SIG_DELETE_REQUEST, NULL);
// FIXME: if above callback deletes - then the below will be invalid
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DESTROYED, NULL));
if (autodel) evas_object_del(obj);
else sd->autodel_clear = NULL;
evas_object_unref(obj);
evas_object_ref(win);
evas_object_smart_callback_call(win, SIG_DELETE_REQUEST, NULL);
// FIXME: if above callback deletes - then the below will be invalid
+ if (_elm_config->atspi_mode)
+ eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_DESTROYED, NULL));
if (autodel) evas_object_del(win);
else sd->autodel_clear = NULL;
evas_object_unref(win);
if (_elm_config->atspi_mode == ELM_ATSPI_MODE_ON)
{
elm_interface_atspi_accessible_children_changed_added_signal_emit(_elm_atspi_bridge_root_get(), obj);
- eo_do(obj, eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED, NULL));
}
evas_object_show(sd->edje);