From d18befe7494d4db7b7f8fd039561e501c24a6388 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Fri, 16 Mar 2018 19:31:00 +0100
Subject: [PATCH 01/16] [prevent][23957] Remove logically dead code
Change-Id: I63b4a859375ba2813b6805db8d00521a41fe699e
---
atspi/atspi-event-listener.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/atspi/atspi-event-listener.c b/atspi/atspi-event-listener.c
index 5c4b442..be04ad2 100644
--- a/atspi/atspi-event-listener.c
+++ b/atspi/atspi-event-listener.c
@@ -871,7 +871,7 @@ detail_matches_listener (const char *event_detail, const char *listener_detail)
return TRUE;
if (!event_detail)
- return (listener_detail ? FALSE : TRUE);
+ return FALSE;
return !(listener_detail [strcspn (listener_detail, ":")] == '\0'
? strncmp (listener_detail, event_detail,
--
2.7.4
From 3bcab0221fd5bbf0393ec54d4267e613bf1bb625 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Fri, 16 Mar 2018 19:36:08 +0100
Subject: [PATCH 02/16] [prevent][35992] Fix for resource leakage
Change-Id: Iee9baa0546c1aee54cd9fbea4e37b63360767759
---
atspi/atspi-collection.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/atspi/atspi-collection.c b/atspi/atspi-collection.c
index f4e33ef..c893b49 100644
--- a/atspi/atspi-collection.c
+++ b/atspi/atspi-collection.c
@@ -81,10 +81,12 @@ static GArray *
return_accessibles (DBusMessage *message)
{
DBusMessageIter iter, iter_array;
- GArray *ret = g_array_new (TRUE, TRUE, sizeof (AtspiAccessible *));
+ GArray *ret;
_ATSPI_DBUS_CHECK_SIG (message, "a(so)", NULL, NULL);
+ ret = g_array_new (TRUE, TRUE, sizeof (AtspiAccessible *));
+
dbus_message_iter_init (message, &iter);
dbus_message_iter_recurse (&iter, &iter_array);
--
2.7.4
From 08ffe8cf81b44f282fa8b3c072772873e342e950 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Fri, 16 Mar 2018 19:42:52 +0100
Subject: [PATCH 03/16] [prevent][24443] Fix for resource leakage
Change-Id: Ie4377a46c1d96e2a88da9851e72e6aa7b5198d09
---
atspi/atspi-accessible.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/atspi/atspi-accessible.c b/atspi/atspi-accessible.c
index 6612a21..db4688b 100644
--- a/atspi/atspi-accessible.c
+++ b/atspi/atspi-accessible.c
@@ -2058,10 +2058,12 @@ append_const_val (GArray *array, const gchar *val)
GArray *
atspi_accessible_get_interfaces (AtspiAccessible *obj)
{
- GArray *ret = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ GArray *ret;
g_return_val_if_fail (obj != NULL, NULL);
+ ret = g_array_new (TRUE, TRUE, sizeof (gchar *));
+
append_const_val (ret, "Accessible");
if (atspi_accessible_is_action (obj))
append_const_val (ret, "Action");
--
2.7.4
From 2f30335eb4ead683a5803f8e77f37fb947b16410 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Fri, 16 Mar 2018 19:48:50 +0100
Subject: [PATCH 04/16] [prevent][40806] Fix for dereference after null check
Change-Id: Ic7239f40dcd5270a6fa4edf95daf30459ebfcdd4
---
atspi/atspi-accessible.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/atspi/atspi-accessible.c b/atspi/atspi-accessible.c
index db4688b..e018379 100644
--- a/atspi/atspi-accessible.c
+++ b/atspi/atspi-accessible.c
@@ -173,7 +173,7 @@ atspi_accessible_dispose (GObject *object)
g_object_unref (accessible);
child->accessible_parent = NULL;
}
- g_object_unref (child);
+ g_clear_object (&child);
}
g_list_free (children);
--
2.7.4
From d3c1fc8c5aca4fca78c0c04580c9e4532eba8ff2 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Tue, 20 Mar 2018 17:19:37 +0100
Subject: [PATCH 05/16] [prevent][38682] Fix for resource leak
Change-Id: Iea61c399f59d2ddb2b55768f325c3005e01cfcf3
---
atspi/atspi-event-listener.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/atspi/atspi-event-listener.c b/atspi/atspi-event-listener.c
index be04ad2..4f59939 100644
--- a/atspi/atspi-event-listener.c
+++ b/atspi/atspi-event-listener.c
@@ -766,6 +766,7 @@ atspi_event_listener_deregister_from_callback (AtspiEventListenerCB callback,
GPtrArray *matchrule_array;
gint i;
GList *l;
+ gboolean result = TRUE;
if (!convert_event_type_to_dbus (event_type, &category, &name, &detail, &matchrule_array))
{
@@ -800,8 +801,10 @@ atspi_event_listener_deregister_from_callback (AtspiEventListenerCB callback,
atspi_path_registry,
atspi_interface_registry,
"DeregisterEvent");
- if (!message)
- return FALSE;
+ if (!message) {
+ result = FALSE;
+ break;
+ }
dbus_message_append_args (message, DBUS_TYPE_STRING, &event_type, DBUS_TYPE_INVALID);
reply = _atspi_dbus_send_with_reply_and_block (message, error);
if (reply)
@@ -817,7 +820,7 @@ atspi_event_listener_deregister_from_callback (AtspiEventListenerCB callback,
for (i = 0; i < matchrule_array->len; i++)
g_free (g_ptr_array_index (matchrule_array, i));
g_ptr_array_free (matchrule_array, TRUE);
- return TRUE;
+ return result;
}
/**
--
2.7.4
From 02ed09df218988d25d8490075f9cb5052d1f29cb Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Tue, 20 Mar 2018 18:01:04 +0100
Subject: [PATCH 06/16] [prevent][33973] Fix for unchecked return value
Change-Id: I528adb092e1f8361dfbcb95ecc2d307587e26aac
---
atspi/atspi-misc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/atspi/atspi-misc.c b/atspi/atspi-misc.c
index b36ece0..e102c9b 100644
--- a/atspi/atspi-misc.c
+++ b/atspi/atspi-misc.c
@@ -872,7 +872,8 @@ atspi_init (void)
bus = atspi_get_a11y_bus ();
if (!bus)
return 2;
- dbus_bus_register (bus, NULL);
+ if (!dbus_bus_register (bus, NULL))
+ return 2;
atspi_dbus_connection_setup_with_g_main(bus, g_main_context_default());
dbus_connection_add_filter (bus, atspi_dbus_filter, NULL, NULL);
match = g_strdup_printf ("type='signal',interface='%s',member='AddAccessible'", atspi_interface_cache);
--
2.7.4
From 32e740ae48265f78d66f85be61251ccb789f994f Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Tue, 20 Mar 2018 18:32:38 +0100
Subject: [PATCH 07/16] [prevent][38358] Fix for resource leak
Change-Id: I26e7404fa047899f55d4150e2ed427aa097a681f
---
test/at_spi2_tool.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/test/at_spi2_tool.c b/test/at_spi2_tool.c
index fb9739a..7039fb5 100644
--- a/test/at_spi2_tool.c
+++ b/test/at_spi2_tool.c
@@ -670,6 +670,7 @@ static void _at_spi_client_enable(gboolean enabled)
{
static GDBusProxy *proxy = NULL; //we keep proxy (dbus connection) until program exits
GVariant *result;
+ GVariant *enabled_variant;
GError *error = NULL;
GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_NONE;
@@ -690,13 +691,16 @@ static void _at_spi_client_enable(gboolean enabled)
}
}
+ enabled_variant = g_variant_new_boolean(enabled);
result = g_dbus_proxy_call_sync(proxy,
"Set",
- g_variant_new ("(ssv)", "org.a11y.Status", "IsEnabled", g_variant_new_boolean(enabled)),
+ g_variant_new ("(ssv)", "org.a11y.Status", "IsEnabled", enabled_variant),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
&error);
+ if (enabled_variant)
+ g_variant_unref(enabled_variant);
if (result)
g_variant_unref(result);
--
2.7.4
From a6b7352560319b30b97f41eb3a13561104567e0a Mon Sep 17 00:00:00 2001
From: JunsuChoi
Date: Tue, 3 Apr 2018 19:02:28 +0900
Subject: [PATCH 08/16] Add member of default label info that check for default
label enabed
Change-Id: I9f20e4aed82de71c5f64210817f8b11f6505f63d
---
atspi/atspi-accessible.c | 7 ++++++-
atspi/atspi-accessible.h | 1 +
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/atspi/atspi-accessible.c b/atspi/atspi-accessible.c
index e018379..944e055 100644
--- a/atspi/atspi-accessible.c
+++ b/atspi/atspi-accessible.c
@@ -577,6 +577,8 @@ atspi_accessible_get_reading_material (AtspiAccessible *obj, GError **error)
* You have to handle all alocated memory as below on screen-reader side.
*
* AtspiAccessibleDefaultLabelInfo *dli
+ * g_hash_table_unref(dli->attributes);
+
* g_object_unref(dli->obj);
* free(dli);
**/
@@ -593,7 +595,7 @@ atspi_accessible_get_default_label_info (AtspiAccessible *obj, GError **error)
reply = _atspi_dbus_call_partial (obj, atspi_interface_accessible, "GetDefaultLabelInfo", error, "");
- _ATSPI_DBUS_CHECK_SIG (reply, "(so)u", NULL, NULL);
+ _ATSPI_DBUS_CHECK_SIG (reply, "(so)ua{ss}", NULL, NULL);
default_label_info = calloc(1, sizeof(AtspiAccessibleDefaultLabelInfo));
if (!default_label_info)
@@ -610,6 +612,9 @@ atspi_accessible_get_default_label_info (AtspiAccessible *obj, GError **error)
default_label_info->role = role;
dbus_message_iter_next (&iter);
+ default_label_info->attributes = _atspi_dbus_hash_from_iter (&iter);
+ dbus_message_iter_next (&iter);
+
return default_label_info;
}
diff --git a/atspi/atspi-accessible.h b/atspi/atspi-accessible.h
index 9efc168..2b7046e 100644
--- a/atspi/atspi-accessible.h
+++ b/atspi/atspi-accessible.h
@@ -49,6 +49,7 @@ struct _AtspiAccessibleDefaultLabelInfo
{
AtspiAccessible *obj;
AtspiRole role;
+ GHashTable *attributes;
};
struct _AtspiAccessibleReadingMaterial
--
2.7.4
From 2bb561302bdf42cb7f0b5373a97ef7e4dca831e4 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Fri, 20 Apr 2018 18:15:56 +0200
Subject: [PATCH 09/16] [prevent][76366] Fix for resource leak
Change-Id: Ieaab30db6d430f898ab3959528bacd4056bfefd8
---
test/at_spi2_tool.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/test/at_spi2_tool.c b/test/at_spi2_tool.c
index 7039fb5..cca84f1 100644
--- a/test/at_spi2_tool.c
+++ b/test/at_spi2_tool.c
@@ -655,9 +655,8 @@ static void _atspi_tree_traverse(const char *app_name, bool dump, bool check, bo
} else {
printf("\n");
}
-
- free(name);
}
+ free(name);
}
if (!app_name_matched && (dump || check))
--
2.7.4
From 086463c9ae17f591f4fe09e08e870c646506a006 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Stawicki?=
Date: Mon, 23 Apr 2018 11:16:20 +0200
Subject: [PATCH 10/16] [prevent][73691] Fix for resource leak
Change-Id: I7030fa9b835457b72ca2b826df4e2e9942d69d34
---
atspi/atspi-event-listener.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/atspi/atspi-event-listener.c b/atspi/atspi-event-listener.c
index 1717b75..dc1ff80 100644
--- a/atspi/atspi-event-listener.c
+++ b/atspi/atspi-event-listener.c
@@ -788,14 +788,14 @@ atspi_event_listener_deregister_from_callback (AtspiEventListenerCB callback,
GList *l;
gboolean result = TRUE;
+ if (!callback)
+ {
+ return FALSE;
+ }
if (!convert_event_type_to_dbus (event_type, &category, &name, &detail, &matchrule_array))
{
return FALSE;
}
- if (!callback)
- {
- return FALSE;
- }
for (l = event_listeners; l;)
{
--
2.7.4
From 84e6c164af5a36f0b3dc51ceeae146813938fe89 Mon Sep 17 00:00:00 2001
From: Pawel Kurowski
Date: Sun, 14 Jan 2018 14:08:54 +0100
Subject: [PATCH 11/16] launch universal-switch, if any of associated vconf
flags is set
Change-Id: I9efc756419d76bc79b8dd9a531a775f3eacdfe13
---
bus/at-spi-bus-launcher.c | 77 ++++++++++++++++++++++++++++++++---------------
1 file changed, 53 insertions(+), 24 deletions(-)
diff --git a/bus/at-spi-bus-launcher.c b/bus/at-spi-bus-launcher.c
index 118379f..ee4735d 100644
--- a/bus/at-spi-bus-launcher.c
+++ b/bus/at-spi-bus-launcher.c
@@ -37,6 +37,9 @@
//TODO: move to vconf/vconf-internal-setting-keys.h?
#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH "db/setting/accessibility/universal-switch"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SCANNING "db/setting/accessibility/universal-switch/scanning"
+
+#define MAX_NUMBER_OF_KEYS_PER_CLIENT 2
#define APP_CONTROL_OPERATION_SCREEN_READ "http://tizen.org/appcontrol/operation/read_screen"
#define APP_CONTROL_OPERATION_UNIVERSAL_SWITCH "http://tizen.org/appcontrol/operation/universal_switch"
@@ -80,7 +83,8 @@ typedef enum {
typedef struct {
const char * name;
const char * app_control_operation;
- const char * vconf_key;
+ const char * vconf_key[MAX_NUMBER_OF_KEYS_PER_CLIENT];
+ int number_of_keys;
int launch_repeats;
int pid;
} A11yBusClient;
@@ -971,10 +975,26 @@ _terminate_client(A11yBusClient *client)
void vconf_client_cb(keynode_t *node, void *user_data)
{
A11yBusClient *client = user_data;
- int client_needed = vconf_keynode_get_bool(node);
- LOGD("vconf_keynode_get_bool(node): %i", client_needed);
- if (client_needed < 0)
- return;
+
+ gboolean client_needed = FALSE;
+ int i;
+ for (i = 0; i < client->number_of_keys; i++) {
+ int status = 0;
+ int ret =vconf_get_bool(client->vconf_key[i], &status);
+ if (ret != 0)
+ {
+ LOGD("Could not read %s key value.\n", client->vconf_key[i]);
+ return;
+ }
+ LOGD("vconf_keynode_get_bool(node): %i", status);
+ if (status < 0)
+ return;
+
+ if (status == 1) {
+ client_needed = TRUE;
+ break;
+ }
+ }
//check if process really exists (e.g didn't crash)
if (client->pid > 0)
@@ -997,26 +1017,32 @@ static gboolean register_executable(A11yBusClient *client)
{
gboolean client_needed = FALSE;
- if(!client->vconf_key) {
- LOGE("Vconf_key missing for client: %s \n", client->vconf_key);
- return FALSE;
- }
+ int i;
+ for (i = 0; i < client->number_of_keys; i++) {
+ if (!client->vconf_key[i]) {
+ LOGE("Vconf_key missing for client: %d \n", i);
+ return FALSE;
+ }
- int ret = vconf_get_bool(client->vconf_key, &client_needed);
- if (ret != 0)
- {
- LOGD("Could not read %s key value.\n", client->vconf_key);
- return FALSE;
- }
- ret = vconf_notify_key_changed(client->vconf_key, vconf_client_cb, client);
- if(ret != 0)
- {
- LOGD("Could not add information level callback\n");
- return FALSE;
- }
+ int status = 0;
+ int ret = vconf_get_bool(client->vconf_key[i], &status);
+ if (ret != 0)
+ {
+ LOGD("Could not read %s key value.\n", client->vconf_key[i]);
+ return FALSE;
+ }
+ ret = vconf_notify_key_changed(client->vconf_key[i], vconf_client_cb, client);
+ if (ret != 0)
+ {
+ LOGD("Could not add information level callback\n");
+ return FALSE;
+ }
+ if (status)
+ client_needed = TRUE;
+ }
if (client_needed)
- g_timeout_add_seconds(2,_launch_process_repeat_until_success, client);
+ g_timeout_add_seconds(2,_launch_process_repeat_until_success, client);
return TRUE;
}
@@ -1045,11 +1071,14 @@ main (int argc,
_global_app->screen_reader.name = "screen-reader";
_global_app->screen_reader.app_control_operation = APP_CONTROL_OPERATION_SCREEN_READ;
- _global_app->screen_reader.vconf_key = VCONFKEY_SETAPPL_ACCESSIBILITY_TTS;
+ _global_app->screen_reader.vconf_key[0] = VCONFKEY_SETAPPL_ACCESSIBILITY_TTS;
+ _global_app->screen_reader.number_of_keys = 1;
_global_app->universal_switch.name = "universal-switch";
_global_app->universal_switch.app_control_operation = APP_CONTROL_OPERATION_UNIVERSAL_SWITCH;
- _global_app->universal_switch.vconf_key = VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH;
+ _global_app->universal_switch.vconf_key[0] = VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH;
+ _global_app->universal_switch.vconf_key[1] = VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SCANNING;
+ _global_app->universal_switch.number_of_keys = 2;
for (i = 1; i < argc; i++)
{
--
2.7.4
From f1e9590bafb75e3810b01655f45fb57aba548874 Mon Sep 17 00:00:00 2001
From: Pawel Kurowski
Date: Tue, 16 Jan 2018 15:42:06 +0100
Subject: [PATCH 12/16] Redefine universal-switch vconf keys.
Change-Id: Ib01e580d4b263af6694cd473a3c313d6cdfc8bd6
---
bus/at-spi-bus-launcher.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/bus/at-spi-bus-launcher.c b/bus/at-spi-bus-launcher.c
index ee4735d..9fb138e 100644
--- a/bus/at-spi-bus-launcher.c
+++ b/bus/at-spi-bus-launcher.c
@@ -36,8 +36,8 @@
#endif
//TODO: move to vconf/vconf-internal-setting-keys.h?
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH "db/setting/accessibility/universal-switch"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SCANNING "db/setting/accessibility/universal-switch/scanning"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_CONFIGURATION_SERVICE "db/setting/accessibility/universal-switch/configuration-service"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_INTERACTION_SERVICE "db/setting/accessibility/universal-switch/interaction-service"
#define MAX_NUMBER_OF_KEYS_PER_CLIENT 2
@@ -1076,8 +1076,8 @@ main (int argc,
_global_app->universal_switch.name = "universal-switch";
_global_app->universal_switch.app_control_operation = APP_CONTROL_OPERATION_UNIVERSAL_SWITCH;
- _global_app->universal_switch.vconf_key[0] = VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH;
- _global_app->universal_switch.vconf_key[1] = VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SCANNING;
+ _global_app->universal_switch.vconf_key[0] = VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_CONFIGURATION_SERVICE;
+ _global_app->universal_switch.vconf_key[1] = VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_INTERACTION_SERVICE;
_global_app->universal_switch.number_of_keys = 2;
for (i = 1; i < argc; i++)
--
2.7.4
From 70280c8010a04900fc0f9f67d08fc9464b639615 Mon Sep 17 00:00:00 2001
From: Radoslaw Cybulski
Date: Wed, 23 Jan 2019 15:38:41 +0100
Subject: [PATCH 13/16] 2.31.1
Change-Id: I5608051794e244fbcec00fbfafb9a6d71f485254
---
Makefile.am | 31 -----
NEWS | 37 +++++
atspi-2.pc.in | 11 --
atspi/Makefile.am | 160 ----------------------
atspi/atspi-collection.c | 4 +-
atspi/atspi-component.c | 57 ++++++++
atspi/atspi-component.h | 4 +
atspi/atspi-constants.h | 240 +++++++++++++++++++--------------
atspi/atspi-device-listener.c | 6 +-
atspi/atspi-enum-types.c.template | 2 +-
atspi/atspi-enum-types.h.template | 2 +-
atspi/atspi-event-listener.c | 6 +-
atspi/atspi-gmain.c | 18 +--
atspi/atspi-matchrule.c | 2 +-
atspi/atspi-misc-private.h | 2 +-
atspi/atspi-misc.c | 8 +-
atspi/atspi-registry.c | 7 +-
atspi/meson.build | 19 ++-
autogen.sh | 18 ---
bus/Makefile.am | 48 -------
bus/at-spi-bus-launcher.c | 237 ++++++++++++++++++++++++--------
bus/meson.build | 32 ++++-
configure.ac | 188 --------------------------
dbind/Makefile.am | 27 ----
dbind/dbtest.c | 8 +-
dbind/meson.build | 10 +-
doc/Makefile.am | 4 -
doc/libatspi/libatspi-docs.sgml | 2 -
doc/libatspi/libatspi-sections.txt | 209 +++++++++++++++++++---------
doc/libatspi/tmpl/atspi-constants.sgml | 23 ++++
idl/component.didl | 41 +++++-
idl/controller.didl | 4 +-
meson.build | 18 +--
meson_options.txt | 9 ++
po/Makevars | 78 -----------
po/fr.po | 22 +--
registryd/Makefile.am | 68 ----------
registryd/de-types.h | 2 +
registryd/deviceeventcontroller-x11.c | 16 ++-
registryd/deviceeventcontroller.c | 6 +
registryd/reentrant-list.c | 2 +-
test/Makefile.am | 10 --
xml/Component.xml | 10 ++
xml/Makefile.am | 41 ------
44 files changed, 761 insertions(+), 988 deletions(-)
delete mode 100644 Makefile.am
delete mode 100644 atspi-2.pc.in
delete mode 100644 atspi/Makefile.am
delete mode 100755 autogen.sh
delete mode 100644 bus/Makefile.am
delete mode 100644 configure.ac
delete mode 100644 dbind/Makefile.am
delete mode 100644 doc/Makefile.am
delete mode 100644 po/Makevars
delete mode 100644 registryd/Makefile.am
delete mode 100644 test/Makefile.am
delete mode 100644 xml/Makefile.am
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index dff484a..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-DISTCHECK_CONFIGURE_FLAGS = --enable-introspection --enable-gtk-doc
-
--include $(INTROSPECTION_MAKEFILE)
-INTROSPECTION_GIRS =
-INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir)
-INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
-
-SUBDIRS = po dbind xml atspi bus registryd doc test
-
-ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-
-EXTRA_DIST = \
- atspi-2.pc.in \
- meson.build \
- meson_options.txt
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = atspi-2.pc
-
-DISTCLEANFILES = \
- atspi-2.pc
-
-MAINTAINERCLEANFILES = \
- $(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \
- $(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \
- $(GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL) \
- gtk-doc.make \
- m4/gtk-doc.m4 \
- m4/intltool.m4
-
--include $(top_srcdir)/git.mk
diff --git a/NEWS b/NEWS
index 0abf5f2..0dd86dc 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,40 @@
+What's new in at-spi2-core 2.31.1:
+
+* Bus launcher: fix an issue where the error wasn't cleared on failure.
+
+* Add support for locking/unlocking modifiers.
+
+* Update error log text for consistency.
+
+* Documentation clean-ups.
+
+What's new in at-spi2-core 2.29.1:
+
+* Add dbus-broker support to bus launcher.
+
+* Add ScrollTo and ScrollToPoint component interfaces.
+
+* Do not use deprecated GSettings API
+
+* Fix various compiler warnings and documentation annotations.
+
+What's new in at-spi2-core 2.27.92:
+
+* Support building a static library (bgo#793652).
+\
+* Fix build on FreeBSD (bgo#791608).
+
+What's new in at-spi2-core 2.27.1:
+
+* Dropped autotools support.
+
+* documentation: Remove list association from
+ ATSPI_ROLE_DESCRIPTION_{TERM,VALUE} (bgo#791021).
+
+* Fix a potential buffer overflow in at-spi-bus-launcher (bgo#791124).
+
+* Make the build reproducible (bgo#791167).
+
What's new in at-spi2-core 2.26.1:
* Remove unused dependency on libxkbcommon.
diff --git a/atspi-2.pc.in b/atspi-2.pc.in
deleted file mode 100644
index 71d028a..0000000
--- a/atspi-2.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: atspi
-Description: Accessibility Technology software library
-Requires: dbus-1 glib-2.0
-Version: @VERSION@
-Libs: -L${libdir} -latspi
-Cflags: -I${includedir}/at-spi-2.0
diff --git a/atspi/Makefile.am b/atspi/Makefile.am
deleted file mode 100644
index 636cc76..0000000
--- a/atspi/Makefile.am
+++ /dev/null
@@ -1,160 +0,0 @@
-lib_LTLIBRARIES =
-
-BUILT_SOURCES =
-
-CLEANFILES =
-DISTCLEANFILES =
-EXTRA_DIST = \
- meson.build
-
-lib_LTLIBRARIES += libatspi.la
-
-libatspi_la_LDFLAGS = \
- @LDFLAGS@ @LT_VERSION_INFO@ @LIBTOOL_EXPORT_OPTIONS@ \
- -no-undefined
-
-libatspi_la_CFLAGS = \
- $(DBUS_CFLAGS) \
- $(DBIND_CFLAGS) \
- $(GLIB_CFLAGS) \
- -I$(top_srcdir)/registryd \
- -I$(top_builddir)/registryd \
- -I$(top_builddir) \
- -I$(top_srcdir)
-
-libatspi_la_LIBADD = \
- $(DBUS_LIBS) \
- $(GOBJ_LIBS) \
- $(X11_LIBS) \
- $(top_builddir)/dbind/libdbind.la
-
-libatspi_la_DEPENDENCIES = $(top_builddir)/dbind/libdbind.la
-
-atspi_headers = \
- atspi.h \
- atspi-accessible.h \
- atspi-action.h \
- atspi-application.h \
- atspi-collection.h \
- atspi-component.h \
- atspi-constants.h \
- atspi-device-listener.h \
- atspi-device-listener-private.h \
- atspi-document.h \
- atspi-editabletext.h \
- atspi-event-listener.h \
- atspi-event-listener-private.h \
- atspi-gmain.h \
- atspi-hyperlink.h \
- atspi-hypertext.h \
- atspi-image.h \
- atspi-matchrule.h \
- atspi-misc.h \
- atspi-object.h \
- atspi-private.h \
- atspi-registry.h \
- atspi-relation.h \
- atspi-selection.h \
- atspi-stateset.h \
- atspi-table.h \
- atspi-table-cell.h \
- atspi-text.h \
- atspi-types.h \
- atspi-value.h
-
-libatspi_la_SOURCES = \
- $(BUILT_SOURCES) \
- atspi-accessible.c \
- atspi-accessible-private.h \
- atspi-action.c \
- atspi-application.c \
- atspi-collection.c \
- atspi-component.c \
- atspi-device-listener.c \
- atspi-device-listener-private.h \
- atspi-document.c \
- atspi-editabletext.c \
- atspi-event-listener.c \
- atspi-event-listener-private.h \
- atspi-gmain.c \
- atspi-hyperlink.c \
- atspi-hypertext.c \
- atspi-image.c \
- atspi-matchrule.c \
- atspi-matchrule-private.h \
- atspi-misc.c \
- atspi-misc-private.h \
- atspi-object.c \
- atspi-private.h \
- atspi-registry.c \
- atspi-relation.c \
- atspi-selection.c \
- atspi-stateset.c \
- atspi-table.c \
- atspi-table-cell.c \
- atspi-text.c \
- atspi-value.c \
- $()
-
-BUILT_SOURCES += \
- atspi-enum-types.c \
- atspi-enum-types.h
-
-libatspiincludedir = $(includedir)/at-spi-2.0/atspi
-libatspiinclude_HEADERS = $(atspi_headers) atspi-enum-types.h
-
-#CLEANFILES = atspi-constants.h
-
-#atspi-constants.h: $(top_srcdir)/xml/spec.xml $(top_srcdir)/tools/c-constants-gen.py
-# python $(top_srcdir)/tools/c-constants-gen.py Atspi $(top_srcdir)/xml/spec.xml atspi-constants
-
-ENUM_TYPES = \
- atspi-constants.h \
- atspi-types.h
-
-atspi-enum-types.h: atspi-enum-types.h.template $(ENUM_TYPES)
- $(AM_V_GEN) $(GLIB_MKENUMS) --template $(srcdir)/atspi-enum-types.h.template $(addprefix $(srcdir)/, $(ENUM_TYPES)) > $@.tmp \
- && (cmp -s $@.tmp $@ || cp -f $@.tmp $@) \
- && rm -f $@.tmp
-
-atspi-enum-types.c: atspi-enum-types.c.template $(ENUM_TYPES)
- $(AM_V_GEN) $(GLIB_MKENUMS) --template $(srcdir)/atspi-enum-types.c.template $(addprefix $(srcdir)/, $(ENUM_TYPES)) > $@.tmp \
- && (cmp -s $@.tmp $@ || cp -f $@.tmp $@) \
- && rm -f $@.tmp
-
-CLEANFILES += \
- atspi-enum-types.c \
- atspi-enum-types.h
-
-EXTRA_DIST += \
- atspi-enum-types.c.template \
- atspi-enum-types.h.template
-
--include $(INTROSPECTION_MAKEFILE)
-INTROSPECTION_GIRS =
-INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
-INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
-
-if HAVE_INTROSPECTION
-Atspi-2.0.gir: libatspi.la
-Atspi_2_0_gir_INCLUDES = DBus-1.0 GLib-2.0 GObject-2.0
-Atspi_2_0_gir_EXPORT_PACKAGES = atspi-2
-Atspi_2_0_gir_CFLAGS = -I$(top_builddir) -I$(top_srcdir)
-Atspi_2_0_gir_LIBS = libatspi.la $(top_builddir)/dbind/libdbind.la
-Atspi_2_0_gir_FILES = $(libatspi_la_SOURCES) $(atspi_headers) atspi-enum-types.c atspi-enum-types.h
-Atspi_2_0_gir_SCANNERFLAGS = --namespace Atspi --nsversion=2.0
-INTROSPECTION_SCANNER_ARGS += --c-include='atspi/atspi.h'
-INTROSPECTION_GIRS += Atspi-2.0.gir
-
-girdir = $(datadir)/gir-1.0
-gir_DATA = $(INTROSPECTION_GIRS)
-
-typelibdir = $(libdir)/girepository-1.0
-typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
-
-CLEANFILES += \
- $(gir_DATA) \
- $(typelib_DATA)
-endif
-
--include $(top_srcdir)/git.mk
diff --git a/atspi/atspi-collection.c b/atspi/atspi-collection.c
index f4e33ef..d3f27da 100644
--- a/atspi/atspi-collection.c
+++ b/atspi/atspi-collection.c
@@ -36,7 +36,7 @@ atspi_collection_is_ancestor_of (AtspiCollection *collection,
AtspiAccessible *test,
GError **error)
{
- g_warning ("Atspi: TODO: Implement is_ancestor_of");
+ g_warning ("AT-SPI: TODO: Implement is_ancestor_of");
return FALSE;
}
@@ -267,7 +267,7 @@ atspi_collection_get_matches_from (AtspiCollection *collection,
AtspiAccessible *
atspi_collection_get_active_descendant (AtspiCollection *collection, GError **error)
{
- g_warning ("atspi: TODO: Implement get_active_descendants");
+ g_warning ("AT-SPI: TODO: Implement get_active_descendants");
return NULL;
}
diff --git a/atspi/atspi-component.c b/atspi/atspi-component.c
index 0ab552b..ed22582 100644
--- a/atspi/atspi-component.c
+++ b/atspi/atspi-component.c
@@ -412,6 +412,63 @@ atspi_component_set_size (AtspiComponent *obj,
return ret;
}
+/**
+ * atspi_component_scroll_to:
+ * @obj: a pointer to the #AtspiComponent object on which to operate.
+ * @type: a #AtspiScrollType indicating where the object should be placed on the
+ * screen.
+ *
+ * Scrolls whatever container of the #AtspiComponent object so it becomes
+ * visible on the screen.
+ *
+ * Returns: #TRUE if successful, #FALSE otherwise.
+ **/
+gboolean
+atspi_component_scroll_to (AtspiComponent *obj,
+ AtspiScrollType type,
+ GError **error)
+{
+ dbus_bool_t retval = FALSE;
+
+ g_return_val_if_fail (obj != NULL, FALSE);
+
+ _atspi_dbus_call (obj, atspi_interface_component,
+ "ScrollTo", error, "u=>b", type, &retval);
+
+ return retval;
+}
+
+/**
+ * atspi_component_scroll_to_point:
+ * @obj: a pointer to the #AtspiComponent object on which to operate.
+ * @coords: a #AtspiCoordType indicating whether the coordinates are relative to
+ * the screen, to the window, or to the parent object.
+ * @x: the x coordinate of the point to reach
+ * @y: the y coordinate of the point to reach
+ * @error: return location for a #GError
+ *
+ * Scrolls whatever container of the #AtspiComponent object so it becomes
+ * visible on the screen at a given position.
+ *
+ * Returns: #TRUE if successful, #FALSE otherwise.
+ **/
+gboolean
+atspi_component_scroll_to_point (AtspiComponent *obj,
+ AtspiCoordType coords,
+ gint x,
+ gint y,
+ GError **error)
+{
+ dbus_bool_t retval = FALSE;
+
+ g_return_val_if_fail (obj != NULL, FALSE);
+
+ _atspi_dbus_call (obj, atspi_interface_component,
+ "ScrollToPoint", error, "uii=>b", coords, x, y, &retval);
+
+ return retval;
+}
+
static void
atspi_component_base_init (AtspiComponent *klass)
{
diff --git a/atspi/atspi-component.h b/atspi/atspi-component.h
index dd3455a..c84232d 100644
--- a/atspi/atspi-component.h
+++ b/atspi/atspi-component.h
@@ -107,6 +107,10 @@ gboolean atspi_component_set_position (AtspiComponent *obj, gint x, gint y, Atsp
gboolean atspi_component_set_size (AtspiComponent *obj, gint width, gint height, GError **error);
+gboolean atspi_component_scroll_to (AtspiComponent *obj, AtspiScrollType type, GError **error);
+
+gboolean atspi_component_scroll_to_point (AtspiComponent *obj, AtspiCoordType coords, gint x, gint y, GError **error);
+
G_END_DECLS
#endif /* _ATSPI_COMPONENT_H_ */
diff --git a/atspi/atspi-constants.h b/atspi/atspi-constants.h
index 1af391d..b9f41ef 100644
--- a/atspi/atspi-constants.h
+++ b/atspi/atspi-constants.h
@@ -53,6 +53,8 @@
Accessibility::StateType\n
Accessibility::Event\n
Accessibility::EventDetails \n
+ Accessibility::ScrollType \n
+ Accessibility::CoordType \n
\section Registry
Accessibility also includes Accessibility::Registry,
@@ -124,8 +126,10 @@ typedef enum {
/**
* AtspiCoordType:
* @ATSPI_COORD_TYPE_SCREEN: Specifies xy coordinates relative to the screen.
- * @ATSPI_COORD_TYPE_WINDOW: Specifies xy coordinates relative to the widget's
+ * @ATSPI_COORD_TYPE_WINDOW: Specifies xy coordinates relative to the widget's
* top-level window.
+ * @ATSPI_COORD_TYPE_PARENT: Specifies xy coordinates relative to the widget's
+ * immediate parent.
*
* Enumeration used by #AtspiComponent, #AtspiImage, and #AtspiText interfaces
* to specify whether coordinates are relative to the window or the screen.
@@ -134,6 +138,7 @@ typedef enum {
typedef enum {
ATSPI_COORD_TYPE_SCREEN,
ATSPI_COORD_TYPE_WINDOW,
+ ATSPI_COORD_TYPE_PARENT,
} AtspiCoordType;
/**
@@ -141,18 +146,20 @@ typedef enum {
*
* One higher than the highest valid value of #AtspiCoordType.
**/
-#define ATSPI_COORD_TYPE_COUNT (1+1)
+#define ATSPI_COORD_TYPE_COUNT (2+1)
/**
* AtspiCollectionSortOrder:
- * @ATSPI_Collection_SORT_ORDER_INVALID:
- * @ATSPI_Collection_SORT_ORDER_CANONICAL:
- * @ATSPI_Collection_SORT_ORDER_FLOW:
- * @ATSPI_Collection_SORT_ORDER_TAB:
- * @ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL:
- * @ATSPI_Collection_SORT_ORDER_REVERSE_FLOW:
- * @ATSPI_Collection_SORT_ORDER_REVERSE_TAB:
- * @ATSPI_Collection_SORT_ORDER_LAST_DEFINED:
+ * @ATSPI_Collection_SORT_ORDER_INVALID: Invalid sort order
+ * @ATSPI_Collection_SORT_ORDER_CANONICAL: Canonical sort order
+ * @ATSPI_Collection_SORT_ORDER_FLOW: Flow sort order
+ * @ATSPI_Collection_SORT_ORDER_TAB: Tab sort order
+ * @ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL: Reverse canonical sort order
+ * @ATSPI_Collection_SORT_ORDER_REVERSE_FLOW: Reverse flow sort order
+ * @ATSPI_Collection_SORT_ORDER_REVERSE_TAB: Reverse tab sort order
+ * @ATSPI_Collection_SORT_ORDER_LAST_DEFINED: Used only to determine the end of the
+ * enumeration.
+
*
* Enumeration used by interface #AtspiCollection to specify
* the way #AtspiAccesible objects should be sorted.
@@ -178,14 +185,14 @@ typedef enum {
/**
* AtspiCollectionMatchType:
- * @ATSPI_Collection_MATCH_INVALID: Indicates an error condition or
+ * @ATSPI_Collection_MATCH_INVALID: Indicates an error condition or
* uninitialized value.
* @ATSPI_Collection_MATCH_ALL: #TRUE if all of the criteria are met.
* @ATSPI_Collection_MATCH_ANY: #TRUE if any of the criteria are met.
* @ATSPI_Collection_MATCH_NONE: #TRUE if none of the criteria are met.
* @ATSPI_Collection_MATCH_EMPTY: Same as @ATSPI_Collection_MATCH_ALL if
- * the criteria is non-empty; for empty criteria this rule requires returned
- * value to also have empty set.
+ * the criteria is non-empty; for empty criteria this rule requires returned
+ * value to also have empty set.
* @ATSPI_Collection_MATCH_LAST_DEFINED: Used only to determine the end of the
* enumeration.
*
@@ -211,10 +218,11 @@ typedef enum {
/**
* AtspiCollectionTreeTraversalType:
- * @ATSPI_Collection_TREE_RESTRICT_CHILDREN:
- * @ATSPI_Collection_TREE_RESTRICT_SIBLING:
- * @ATSPI_Collection_TREE_INORDER:
- * @ATSPI_Collection_TREE_LAST_DEFINED:
+ * @ATSPI_Collection_TREE_RESTRICT_CHILDREN: Restrict children tree traveral
+ * @ATSPI_Collection_TREE_RESTRICT_SIBLING: Restrict sibling tree traversal
+ * @ATSPI_Collection_TREE_INORDER: In-order tree traversal.
+ * @ATSPI_Collection_TREE_LAST_DEFINED: Used only to determine the end of the
+ * enumeration.
*
* Enumeration used by interface #AtspiCollection to specify
* restrictions on #AtspiAccesible objects to be traversed.
@@ -414,7 +422,7 @@ typedef enum {
* @ATSPI_STATE_ACTIVE: Indicates a window is currently the active window, or
* an object is the active subelement within a container or table.
* @ATSPI_STATE_ACTIVE should not be used for objects which have
- * @ATSPI_STATE_FOCUSABLE or @ATSPI_STATE_SELECTABLE: Those objects should use
+ * #ATSPI_STATE_FOCUSABLE or #ATSPI_STATE_SELECTABLE: Those objects should use
* @ATSPI_STATE_FOCUSED and @ATSPI_STATE_SELECTED respectively.
* @ATSPI_STATE_ACTIVE is a means to indicate that an object which is not
* focusable and not selectable is the currently-active item within its
@@ -438,8 +446,8 @@ typedef enum {
* disclosure of its children.
* @ATSPI_STATE_EXPANDED: Indicates this object is expanded.
* @ATSPI_STATE_FOCUSABLE: Indicates this object can accept keyboard focus,
- * which means all events resulting from typing on the keyboard will
- * normally be passed to it when it has focus.
+ * which means all events resulting from typing on the keyboard will
+ * normally be passed to it when it has focus.
* @ATSPI_STATE_FOCUSED: Indicates this object currently has the keyboard
* focus.
* @ATSPI_STATE_HAS_TOOLTIP: Indicates that the object has an associated
@@ -636,8 +644,8 @@ typedef enum {
/**
* AtspiKeyEventType:
- * @ATSPI_KEY_PRESSED:
- * @ATSPI_KEY_RELEASED:
+ * @ATSPI_KEY_PRESSED: Key press event
+ * @ATSPI_KEY_RELEASED: Key release event
*
* Deprecated. Should not be used.
*
@@ -707,6 +715,8 @@ typedef enum {
* subject to the out-of-keymap limitations described for
* @ATSPI_KEY_SYM. In practice this limitation primarily effects
* Chinese and Japanese locales.
+ * @ATSPI_KEY_LOCKMODIFIERS: Emulates locking a set of modifiers.
+ * @ATSPI_KEY_UNLOCKMODIFIERS: Emulates unlocking a set of modifiers.
*
* Enumeration used when synthesizing keyboard input via
* #atspi_generate_keyboard_event.
@@ -718,6 +728,8 @@ typedef enum {
ATSPI_KEY_PRESSRELEASE,
ATSPI_KEY_SYM,
ATSPI_KEY_STRING,
+ ATSPI_KEY_LOCKMODIFIERS,
+ ATSPI_KEY_UNLOCKMODIFIERS,
} AtspiKeySynthType;
/**
@@ -864,7 +876,7 @@ typedef enum {
* the valuator. Common examples include association of scrollbars with the
* viewport or panel which they control.
*
- *
+ *
* Enumeration used to specify
* the type of relation encapsulated in an #AtspiRelation object.
*
@@ -1154,81 +1166,76 @@ typedef enum {
* @ATSPI_ROLE_INFO_BAR: An object designed to present a message to the user
* within an existing window.
* @ATSPI_ROLE_LEVEL_BAR: A bar that serves as a level indicator to, for
- * instance, show the strength of a password or the state of a battery.
- * Since: 2.8
- *@ATSPI_ROLE_TITLE_BAR: A bar that serves as the title of a window or a
- * dialog. @Since: 2.12
- *@ATSPI_ROLE_BLOCK_QUOTE: An object which contains a text section
- * that is quoted from another source. @Since: 2.12
- *@ATSPI_ROLE_AUDIO: An object which represents an audio
- * element. @Since: 2.12
- *@ATSPI_ROLE_VIDEO: An object which represents a video
- * element. @Since: 2.12
- *@ATSPI_ROLE_DEFINITION: A definition of a term or concept. @Since: 2.12
- *@ATSPI_ROLE_ARTICLE: A section of a page that consists of a
- * composition that forms an independent part of a document, page, or
- * site. Examples: A blog entry, a news story, a forum post. @Since:
- * 2.12
- *@ATSPI_ROLE_LANDMARK: A region of a web page intended as a
- * navigational landmark. This is designed to allow Assistive
- * Technologies to provide quick navigation among key regions within a
- * document. @Since: 2.12
- *@ATSPI_ROLE_LOG: A text widget or container holding log content, such
- * as chat history and error logs. In this role there is a
- * relationship between the arrival of new items in the log and the
- * reading order. The log contains a meaningful sequence and new
- * information is added only to the end of the log, not at arbitrary
- * points. @Since: 2.12
- *@ATSPI_ROLE_MARQUEE: A container where non-essential information
- * changes frequently. Common usages of marquee include stock tickers
- * and ad banners. The primary difference between a marquee and a log
- * is that logs usually have a meaningful order or sequence of
- * important content changes. @Since: 2.12
- *@ATSPI_ROLE_MATH: A text widget or container that holds a mathematical
- * expression. @Since: 2.12
- *@ATSPI_ROLE_RATING: A widget whose purpose is to display a rating,
- * such as the number of stars associated with a song in a media
- * player. Objects of this role should also implement
- * AtspiValue. @Since: 2.12
- *@ATSPI_ROLE_TIMER: An object containing a numerical counter which
- * indicates an amount of elapsed time from a start point, or the time
- * remaining until an end point. @Since: 2.12
- *@ATSPI_ROLE_STATIC: A generic non-container object whose purpose is to display
- * a brief amount of information to the user and whose role is known by the
- * implementor but lacks semantic value for the user. Examples in which
- * @ATSPI_ROLE_STATIC is appropriate include the message displayed in a message
- * box and an image used as an alternative means to display text.
- * @ATSPI_ROLE_STATIC should not be applied to widgets which are traditionally
- * interactive, objects which display a significant amount of content, or any
- * object which has an accessible relation pointing to another object. The
- * displayed information, as a general rule, should be exposed through the
- * accessible name of the object. For labels which describe another widget, see
- * @ATSPI_ROLE_LABEL. For text views, see @ATSPI_ROLE_TEXT. For generic
- * containers, see @ATSPI_ROLE_PANEL. For objects whose role is not known by the
- * implementor, see @ATSPI_ROLE_UNKNOWN. @Since: 2.16.
- *@ATSPI_ROLE_MATH_FRACTION: An object that represents a mathematical fraction.
- * @Since: 2.16.
- *@ATSPI_ROLE_MATH_ROOT: An object that represents a mathematical expression
- * displayed with a radical. @Since: 2.16.
- *@ATSPI_ROLE_SUBSCRIPT: An object that contains text that is displayed as a
- * subscript. @Since: 2.16.
- *@ATSPI_ROLE_SUPERSCRIPT: An object that contains text that is displayed as a
- * superscript. @Since: 2.16.
- *@ATSPI_ROLE_DESCRIPTION_LIST: An object that represents a list of term-value
- * groups. A term-value group represents an individual description and consist
- * of one or more names (@ATSPI_ROLE_DESCRIPTION_TERM) followed by one or more
- * values (@ATSPI_ROLE_DESCRIPTION_VALUE). For each list, there should not be
- * more than one group with the same term name. @Since: 2.26.
- *@ATSPI_ROLE_DESCRIPTION_TERM: An object that represents the term, or name,
- * part of a term-description group in a description list. @Since: 2.26.
- *@ATSPI_ROLE_DESCRIPTION_VALUE: An object that represents the description,
- * definition, or value of a term-description group in a description list.
- * The values within a group are alternatives, meaning that you can have
- * several @ATSPI_ROLE_DESCRIPTION_VALUE objects for a given
- * @ATSPI_ROLE_DESCRIPTION_TERM. @Since: 2.26.
- *@ATSPI_ROLE_FOOTNOTE: An object that contains the text of a footnote. @Since: 2.26.
- * @ATSPI_ROLE_LAST_DEFINED: Not a valid role, used for finding end of
- * enumeration.
+ * instance, show the strength of a password or the state of a battery. @Since: 2.8
+ * @ATSPI_ROLE_TITLE_BAR: A bar that serves as the title of a window or a
+ * dialog. @Since: 2.12
+ * @ATSPI_ROLE_BLOCK_QUOTE: An object which contains a text section
+ * that is quoted from another source. @Since: 2.12
+ * @ATSPI_ROLE_AUDIO: An object which represents an audio
+ * element. @Since: 2.12
+ * @ATSPI_ROLE_VIDEO: An object which represents a video
+ * element. @Since: 2.12
+ * @ATSPI_ROLE_DEFINITION: A definition of a term or concept. @Since: 2.12
+ * @ATSPI_ROLE_ARTICLE: A section of a page that consists of a
+ * composition that forms an independent part of a document, page, or
+ * site. Examples: A blog entry, a news story, a forum post. @Since:
+ * 2.12
+ * @ATSPI_ROLE_LANDMARK: A region of a web page intended as a
+ * navigational landmark. This is designed to allow Assistive
+ * Technologies to provide quick navigation among key regions within a
+ * document. @Since: 2.12
+ * @ATSPI_ROLE_LOG: A text widget or container holding log content, such
+ * as chat history and error logs. In this role there is a
+ * relationship between the arrival of new items in the log and the
+ * reading order. The log contains a meaningful sequence and new
+ * information is added only to the end of the log, not at arbitrary
+ * points. @Since: 2.12
+ * @ATSPI_ROLE_MARQUEE: A container where non-essential information
+ * changes frequently. Common usages of marquee include stock tickers
+ * and ad banners. The primary difference between a marquee and a log
+ * is that logs usually have a meaningful order or sequence of
+ * important content changes. @Since: 2.12
+ * @ATSPI_ROLE_MATH: A text widget or container that holds a mathematical
+ * expression. @Since: 2.12
+ * @ATSPI_ROLE_RATING: A widget whose purpose is to display a rating,
+ * such as the number of stars associated with a song in a media
+ * player. Objects of this role should also implement
+ * AtspiValue. @Since: 2.12
+ * @ATSPI_ROLE_TIMER: An object containing a numerical counter which
+ * indicates an amount of elapsed time from a start point, or the time
+ * remaining until an end point. @Since: 2.12
+ * @ATSPI_ROLE_STATIC: A generic non-container object whose purpose is to display
+ * a brief amount of information to the user and whose role is known by the
+ * implementor but lacks semantic value for the user. Examples in which
+ * @ATSPI_ROLE_STATIC is appropriate include the message displayed in a message
+ * box and an image used as an alternative means to display text.
+ * @ATSPI_ROLE_STATIC should not be applied to widgets which are traditionally
+ * interactive, objects which display a significant amount of content, or any
+ * object which has an accessible relation pointing to another object. The
+ * displayed information, as a general rule, should be exposed through the
+ * accessible name of the object. For labels which describe another widget, see
+ * @ATSPI_ROLE_LABEL. For text views, see @ATSPI_ROLE_TEXT. For generic
+ * containers, see @ATSPI_ROLE_PANEL. For objects whose role is not known by the
+ * implementor, see @ATSPI_ROLE_UNKNOWN. @Since: 2.16.
+ * @ATSPI_ROLE_MATH_FRACTION: An object that represents a mathematical fraction. @Since: 2.16.
+ * @ATSPI_ROLE_MATH_ROOT: An object that represents a mathematical expression
+ * displayed with a radical. @Since: 2.16.
+ * @ATSPI_ROLE_SUBSCRIPT: An object that contains text that is displayed as a
+ * subscript. @Since: 2.16.
+ * @ATSPI_ROLE_SUPERSCRIPT: An object that contains text that is displayed as a
+ * superscript. @Since: 2.16.
+ * @ATSPI_ROLE_DESCRIPTION_LIST: An object that represents a list of term-value
+ * groups. A term-value group represents an individual description and consist
+ * of one or more names (@ATSPI_ROLE_DESCRIPTION_TERM) followed by one or more
+ * values (@ATSPI_ROLE_DESCRIPTION_VALUE). For each list, there should not be
+ * more than one group with the same term name. @Since: 2.26.
+ * @ATSPI_ROLE_DESCRIPTION_TERM: An object that represents a term or phrase
+ * with a corresponding definition. @Since: 2.26.
+ * @ATSPI_ROLE_DESCRIPTION_VALUE: An object that represents the description,
+ * definition, or value of a term. @Since: 2.26.
+ * @ATSPI_ROLE_FOOTNOTE: An object that contains the text of a footnote. @Since: 2.26.
+ * @ATSPI_ROLE_LAST_DEFINED: Not a valid role, used for finding end of
+ * enumeration.
*
* Enumeration used by interface #AtspiAccessible to specify the role
* of an #AtspiAccessible object.
@@ -1386,6 +1393,43 @@ typedef enum
ATSPI_CACHE_UNDEFINED = 0x40000000,
} AtspiCache;
+/**
+ * AtspiScrollType:
+ * @ATSPI_SCROLL_TOP_LEFT: Scroll the object to the top left corner of the
+ * window.
+ * @ATSPI_SCROLL_BOTTOM_RIGHT: Scroll the object to the bottom right corner of
+ * the window.
+ * @ATSPI_SCROLL_TOP_EDGE: Scroll the object to the top edge of the window.
+ * @ATSPI_SCROLL_BOTTOM_EDGE: Scroll the object to the bottom edge of the
+ * window.
+ * @ATSPI_SCROLL_LEFT_EDGE: Scroll the object to the left edge of the
+ * window.
+ * @ATSPI_SCROLL_RIGHT_EDGE: Scroll the object to the right edge of the
+ * window.
+ * @ATSPI_SCROLL_ANYWHERE: Scroll the object to application-dependent position
+ * on the window.
+ *
+ * Enumeration used by interface #AtspiAccessible to specify where an
+ * #AtspiAccessible object should be placed on the screen when using scroll_to.
+ *
+ */
+typedef enum {
+ ATSPI_SCROLL_TOP_LEFT,
+ ATSPI_SCROLL_BOTTOM_RIGHT,
+ ATSPI_SCROLL_TOP_EDGE,
+ ATSPI_SCROLL_BOTTOM_EDGE,
+ ATSPI_SCROLL_LEFT_EDGE,
+ ATSPI_SCROLL_RIGHT_EDGE,
+ ATSPI_SCROLL_ANYWHERE
+} AtspiScrollType;
+
+/**
+ * ATSPI_SCROLLTYPE_COUNT:
+ *
+ * One higher than the highest valid value of #AtspiScrollType.
+ */
+#define ATSPI_SCROLLTYPE_COUNT (6+1)
+
#define ATSPI_DBUS_NAME_REGISTRY "org.a11y.atspi.Registry"
#define ATSPI_DBUS_PATH_REGISTRY "/org/a11y/atspi/registry"
#define ATSPI_DBUS_INTERFACE_REGISTRY "org.a11y.atspi.Registry"
diff --git a/atspi/atspi-device-listener.c b/atspi/atspi-device-listener.c
index 5aac60a..56597f7 100644
--- a/atspi/atspi-device-listener.c
+++ b/atspi/atspi-device-listener.c
@@ -351,13 +351,13 @@ _atspi_dbus_handle_DeviceEvent (DBusConnection *bus, DBusMessage *message, void
if (strcmp (dbus_message_get_signature (message), "(uiuuisb)") != 0)
{
- g_warning ("Atspi: Unknown signature for an event");
+ g_warning ("AT-SPI: Unknown signature for an event");
goto done;
}
if (sscanf (path, "/org/a11y/atspi/listeners/%d", &id) != 1)
{
- g_warning ("Atspi: Bad listener path: %s\n", path);
+ g_warning ("AT-SPI: Bad listener path: %s\n", path);
goto done;
}
@@ -379,7 +379,7 @@ _atspi_dbus_handle_DeviceEvent (DBusConnection *bus, DBusMessage *message, void
retval = (*klass->device_event) (listener, &event);
if (retval != 0 && retval != 1)
{
- g_warning ("at-spi: device event handler returned %d; should be 0 or 1", retval);
+ g_warning ("AT-SPI: device event handler returned %d; should be 0 or 1", retval);
retval = 0;
}
}
diff --git a/atspi/atspi-enum-types.c.template b/atspi/atspi-enum-types.c.template
index cd92f99..385d0ee 100644
--- a/atspi/atspi-enum-types.c.template
+++ b/atspi/atspi-enum-types.c.template
@@ -4,7 +4,7 @@
/*** END file-header ***/
/*** BEGIN file-production ***/
-/* enumerations from "@filename@" */
+/* enumerations from "@basename@" */
#include "@filename@"
/*** END file-production ***/
diff --git a/atspi/atspi-enum-types.h.template b/atspi/atspi-enum-types.h.template
index bd297b5..789ad2e 100644
--- a/atspi/atspi-enum-types.h.template
+++ b/atspi/atspi-enum-types.h.template
@@ -9,7 +9,7 @@ G_BEGIN_DECLS
/*** END file-header ***/
/*** BEGIN file-production ***/
-/* Enumerations from "@filename@" */
+/* Enumerations from "@basename@" */
/*** END file-production ***/
diff --git a/atspi/atspi-event-listener.c b/atspi/atspi-event-listener.c
index 752547d..6a3fe6b 100644
--- a/atspi/atspi-event-listener.c
+++ b/atspi/atspi-event-listener.c
@@ -101,7 +101,7 @@ callback_unref (gpointer callback)
info = g_hash_table_lookup (callbacks, callback);
if (!info)
{
- g_warning ("Atspi: Dereferencing invalid callback %p\n", callback);
+ g_warning ("AT-SPI: Dereferencing invalid callback %p\n", callback);
return;
}
info->ref_count--;
@@ -679,7 +679,7 @@ atspi_event_listener_register_from_callback_full (AtspiEventListenerCB callback,
dbus_bus_add_match (_atspi_bus(), matchrule, &d_error);
if (dbus_error_is_set (&d_error))
{
- g_warning ("Atspi: Adding match: %s", d_error.message);
+ g_warning ("AT-SPI: Adding match: %s", d_error.message);
dbus_error_free (&d_error);
/* TODO: Set error */
}
@@ -916,7 +916,7 @@ _atspi_send_event (AtspiEvent *e)
if (!convert_event_type_to_dbus (e->type, &category, &name, &detail, NULL))
{
- g_warning ("Atspi: Couldn't parse event: %s\n", e->type);
+ g_warning ("AT-SPI: Couldn't parse event: %s\n", e->type);
return;
}
for (l = event_listeners; l; l = g_list_next (l))
diff --git a/atspi/atspi-gmain.c b/atspi/atspi-gmain.c
index 3ab985b..588a60d 100644
--- a/atspi/atspi-gmain.c
+++ b/atspi/atspi-gmain.c
@@ -33,7 +33,7 @@
#define _(x) dgettext (GETTEXT_PACKAGE, x)
#define N_(x) x
-/**
+/*
* DBusGMessageQueue:
* A GSource subclass for dispatching DBusConnection messages.
* We need this on top of the IO handlers, because sometimes
@@ -41,8 +41,8 @@
*/
typedef struct
{
- GSource source; /**< the parent GSource */
- DBusConnection *connection; /**< the connection to dispatch */
+ GSource source; /* the parent GSource */
+ DBusConnection *connection; /* the connection to dispatch */
} DBusGMessageQueue;
static gboolean message_queue_prepare (GSource *source,
@@ -95,11 +95,11 @@ message_queue_dispatch (GSource *source,
typedef struct
{
- GMainContext *context; /**< the main context */
- GSList *ios; /**< all IOHandler */
- GSList *timeouts; /**< all TimeoutHandler */
- DBusConnection *connection; /**< NULL if this is really for a server not a connection */
- GSource *message_queue_source; /**< DBusGMessageQueue */
+ GMainContext *context; /* the main context */
+ GSList *ios; /* all IOHandler */
+ GSList *timeouts; /* all TimeoutHandler */
+ DBusConnection *connection; /* NULL if this is really for a server not a connection */
+ GSource *message_queue_source; /* DBusGMessageQueue */
} ConnectionSetup;
@@ -510,7 +510,7 @@ connection_setup_new_from_old (GMainContext *context,
return cs;
}
-/** @} */ /* End of GLib bindings internals */
+/* @} */ /* End of GLib bindings internals */
/**
* atspi_dbus_connection_setup_with_g_main: (skip)
diff --git a/atspi/atspi-matchrule.c b/atspi/atspi-matchrule.c
index e995459..cf6a306 100644
--- a/atspi/atspi-matchrule.c
+++ b/atspi/atspi-matchrule.c
@@ -164,7 +164,7 @@ atspi_match_rule_new (AtspiStateSet *states,
if (role < 128)
rule->roles [role / 32] |= (1 << (role % 32));
else
- g_warning ("Atspi: unexpected role %d\n", role);
+ g_warning ("AT-SPI: unexpected role %d\n", role);
}
}
else
diff --git a/atspi/atspi-misc-private.h b/atspi/atspi-misc-private.h
index fe5ca56..314746e 100644
--- a/atspi/atspi-misc-private.h
+++ b/atspi/atspi-misc-private.h
@@ -125,7 +125,7 @@ void _atspi_dbus_set_state (AtspiAccessible *accessible, DBusMessageIter *iter);
} \
if (strcmp (dbus_message_get_signature (message), type) != 0) \
{ \
- g_warning ("at-spi: Expected message signature %s but got %s at %s line %d", type, dbus_message_get_signature (message), __FILE__, __LINE__); \
+ g_warning ("AT-SPI: Expected message signature %s but got %s at %s line %d", type, dbus_message_get_signature (message), __FILE__, __LINE__); \
dbus_message_unref (message); \
return (ret); \
}
diff --git a/atspi/atspi-misc.c b/atspi/atspi-misc.c
index eebbed4..9b97b18 100644
--- a/atspi/atspi-misc.c
+++ b/atspi/atspi-misc.c
@@ -203,7 +203,7 @@ handle_get_bus_address (DBusPendingCall *pending, void *user_data)
else
{
if (!strcmp (error.name, DBUS_ERROR_FILE_NOT_FOUND))
- g_warning ("Unable to open bus connection: %s", error.message);
+ g_warning ("AT-SPI: Unable to open bus connection: %s", error.message);
dbus_error_free (&error);
}
}
@@ -1258,7 +1258,7 @@ _atspi_dbus_get_property (gpointer obj, const char *interface, const char *name,
dbus_message_iter_init (reply, &iter);
if (dbus_message_iter_get_arg_type (&iter) != 'v')
{
- g_warning ("AT-SPI: expected a variant when fetching %s from interface %s; got %s\n", name, interface, dbus_message_get_signature (reply));
+ g_warning ("atspi_dbus_get_property: expected a variant when fetching %s from interface %s; got %s\n", name, interface, dbus_message_get_signature (reply));
goto done;
}
dbus_message_iter_recurse (&iter, &iter_variant);
@@ -1530,7 +1530,7 @@ get_accessibility_bus_address_dbus (void)
if (!reply)
{
- g_warning ("Error retrieving accessibility bus address: %s: %s",
+ g_warning ("AT-SPI: Error retrieving accessibility bus address: %s: %s",
error.name, error.message);
dbus_error_free (&error);
goto out;
@@ -1584,7 +1584,7 @@ atspi_get_a11y_bus (void)
if (a11y_dbus_slot == -1)
if (!dbus_connection_allocate_data_slot (&a11y_dbus_slot))
- g_warning ("at-spi: Unable to allocate D-Bus slot");
+ g_warning ("AT-SPI: Unable to allocate D-Bus slot");
address_env = g_getenv ("AT_SPI_BUS_ADDRESS");
if (address_env != NULL && *address_env != 0)
diff --git a/atspi/atspi-registry.c b/atspi/atspi-registry.c
index c9b11f0..76b1926 100644
--- a/atspi/atspi-registry.c
+++ b/atspi/atspi-registry.c
@@ -426,8 +426,8 @@ atspi_deregister_device_event_listener (AtspiDeviceListener *listener,
/**
* atspi_generate_keyboard_event:
- * @keyval: a #gint indicating the keycode or keysym of the key event
- * being synthesized.
+ * @keyval: a #gint indicating the keycode or keysym or modifier mask of the
+ * key event being synthesized.
* @keystring: (allow-none): an (optional) UTF-8 string which, if
* @synth_type is %ATSPI_KEY_STRING, indicates a 'composed'
* keyboard input string being synthesized; this type of
@@ -436,7 +436,8 @@ atspi_deregister_device_event_listener (AtspiDeviceListener *listener,
* input method (such as XIM) were used.
* @synth_type: an #AtspiKeySynthType flag indicating whether @keyval
* is to be interpreted as a keysym rather than a keycode
- * (%ATSPI_KEY_SYM) or a string (%ATSPI_KEY_STRING), or
+ * (%ATSPI_KEY_SYM) or a string (%ATSPI_KEY_STRING) or a modifier
+ * mask (%ATSPI_KEY_LOCKMODIFIERS and %ATSPI_KEY_UNLOCKMODIFIERS), or
* whether to synthesize %ATSPI_KEY_PRESS,
* %ATSPI_KEY_RELEASE, or both (%ATSPI_KEY_PRESSRELEASE).
* @error: (allow-none): a pointer to a %NULL #GError pointer, or %NULL
diff --git a/atspi/meson.build b/atspi/meson.build
index ea48ddb..b7a9357 100644
--- a/atspi/meson.build
+++ b/atspi/meson.build
@@ -67,9 +67,9 @@ atspi_enums = gnome.mkenums('atspi-enum-types',
install_header: true)
atspi_enum_h = atspi_enums[1]
-atspi = shared_library('atspi', atspi_sources + atspi_enums,
- version: soversion.split('.')[0],
- soversion: soversion,
+atspi = library('atspi', atspi_sources + atspi_enums,
+ version: soversion,
+ soversion: soversion.split('.')[0],
include_directories: [ root_inc, registryd_inc ],
dependencies: [ libdbus_dep, gobject_dep, dbind_dep, x11_deps ],
install: true)
@@ -90,7 +90,8 @@ if have_gir
gir_extra_args = [
'--c-include=atspi/atspi.h',
- '--pkg-export=atspi-2'
+ '--pkg-export=atspi-2',
+ '--quiet',
]
gir_dir = join_paths(atspi_datadir, 'gir-1.0')
@@ -112,3 +113,13 @@ if have_gir
)
endif
+pkgconfig = import('pkgconfig')
+pkgconfig.generate(
+ name: 'atspi',
+ description: 'Accessibility Technology software library',
+ version: meson.project_version(),
+ libraries: atspi,
+ requires: 'dbus-1 glib-2.0',
+ subdirs: 'at-spi-2.0',
+ filebase: 'atspi-2',
+)
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 4576400..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-test -n "$srcdir" || srcdir=`dirname "$0"`
-test -n "$srcdir" || srcdir=.
-
-olddir=`pwd`
-cd "$srcdir"
-
-# run gtkdocize
-gtkdocize || exit 1
-
-# gnome-autogen.sh runs configure, so do likewise.
-autoreconf -vif
-
-cd "$olddir"
-
-test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
-
diff --git a/bus/Makefile.am b/bus/Makefile.am
deleted file mode 100644
index 688f82a..0000000
--- a/bus/Makefile.am
+++ /dev/null
@@ -1,48 +0,0 @@
-CLEANFILES =
-DISTCLEANFILES =
-EXTRA_DIST = \
- meson.build
-
-libexec_PROGRAMS = at-spi-bus-launcher
-at_spi_bus_launcher_SOURCES = at-spi-bus-launcher.c
-at_spi_bus_launcher_CPPFLAGS = -DSYSCONFDIR=\"$(sysconfdir)\" \
- -DDATADIR=\"$(datadir)\" \
- -DDBUS_DAEMON=\"$(DBUS_DAEMON)\"
-at_spi_bus_launcher_CFLAGS = $(GIO_CFLAGS)
-at_spi_bus_launcher_LDADD = $(GIO_LIBS) $(X11_LIBS)
-
-substitutions = "s,@libexecdir[@],$(libexecdir),"
-
-default_sessiondir = $(sysconfdir)/xdg/autostart
-default_session_DATA = at-spi-dbus-bus.desktop
-at-spi-dbus-bus.desktop: at-spi-dbus-bus.desktop.in
- $(AM_V_GEN) $(SED) -e$ $(substitutions) $< > $@.tmp && mv $@.tmp $@
-
-EXTRA_DIST += at-spi-dbus-bus.desktop.in
-CLEANFILES += at-spi-dbus-bus.desktop
-
-dbusservicedir = $(DBUS_SERVICES_DIR)
-dbusservice_DATA = org.a11y.Bus.service
-org.a11y.Bus.service: org.a11y.Bus.service.in
- $(AM_V_GEN) $(SED) -e $(substitutions) $< > $@.tmp && mv $@.tmp $@
-
-EXTRA_DIST += org.a11y.Bus.service.in
-CLEANFILES += org.a11y.Bus.service
-
-systemd_userdir = $(prefix)/lib/systemd/user
-systemd_user_DATA = at-spi-dbus-bus.service
-at-spi-dbus-bus.service: at-spi-dbus-bus.service.in Makefile
- $(AM_V_GEN) $(SED) -e $(substitutions) $< > $@.tmp && mv $@.tmp $@
-
-EXTRA_DIST += at-spi-dbus-bus.service.in
-CLEANFILES += at-spi-dbus-bus.service
-
-busconfigdir = $(datadir)/defaults/at-spi2
-busconfig_DATA = accessibility.conf
-accessibility.conf: accessibility.conf.in
- $(AM_V_GEN) $(SED) -e "s|[@]DATADIR[@]|$(datadir)|" $(srcdir)/$@.in > $@
-
-EXTRA_DIST += accessibility.conf.in
-CLEANFILES += accessibility.conf
-
--include $(top_srcdir)/git.mk
diff --git a/bus/at-spi-bus-launcher.c b/bus/at-spi-bus-launcher.c
index 261353f..17f01c0 100644
--- a/bus/at-spi-bus-launcher.c
+++ b/bus/at-spi-bus-launcher.c
@@ -2,7 +2,7 @@
*
* at-spi-bus-launcher: Manage the a11y bus as a child process
*
- * Copyright 2011 Red Hat, Inc.
+ * Copyright 2011-2018 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -25,6 +25,11 @@
#include
#include
#include
+#ifdef __linux__
+#include
+#include
+#include
+#endif
#include
#include
#include
@@ -50,6 +55,7 @@ typedef struct {
GDBusConnection *session_bus;
GSettings *a11y_schema;
GSettings *interface_schema;
+ int name_owner_id;
GDBusProxy *client_proxy;
@@ -58,6 +64,7 @@ typedef struct {
int a11y_bus_pid;
char *a11y_bus_address;
int pipefd[2];
+ int listenfd;
char *a11y_launch_error_message;
} A11yBusLauncher;
@@ -215,23 +222,6 @@ name_appeared_handler (GDBusConnection *connection,
register_client (app);
}
-static void
-setup_bus_child (gpointer data)
-{
- A11yBusLauncher *app = data;
- (void) app;
-
- close (app->pipefd[0]);
- dup2 (app->pipefd[1], 3);
- close (app->pipefd[1]);
-
- /* On Linux, tell the bus process to exit if this process goes away */
-#ifdef __linux
-#include
- prctl (PR_SET_PDEATHSIG, 15);
-#endif
-}
-
/**
* unix_read_all_fd_to_string:
*
@@ -244,7 +234,7 @@ unix_read_all_fd_to_string (int fd,
{
ssize_t bytes_read;
- while (max_bytes > 1 && (bytes_read = read (fd, buf, MAX (4096, max_bytes - 1))))
+ while (max_bytes > 1 && (bytes_read = read (fd, buf, MIN (4096, max_bytes - 1))))
{
if (bytes_read < 0)
return FALSE;
@@ -276,33 +266,41 @@ on_bus_exited (GPid pid,
g_main_loop_quit (app->loop);
}
+#ifdef DBUS_DAEMON
+static void
+setup_bus_child_daemon (gpointer data)
+{
+ A11yBusLauncher *app = data;
+ (void) app;
+
+ close (app->pipefd[0]);
+ dup2 (app->pipefd[1], 3);
+ close (app->pipefd[1]);
+
+ /* On Linux, tell the bus process to exit if this process goes away */
+#ifdef __linux__
+ prctl (PR_SET_PDEATHSIG, 15);
+#endif
+}
+
static gboolean
-ensure_a11y_bus (A11yBusLauncher *app)
+ensure_a11y_bus_daemon (A11yBusLauncher *app, char *config_path)
{
+ char *argv[] = { DBUS_DAEMON, config_path, "--nofork", "--print-address", "3", NULL };
GPid pid;
- char *argv[] = { DBUS_DAEMON, NULL, "--nofork", "--print-address", "3", NULL };
char addr_buf[2048];
GError *error = NULL;
- const char *config_path = NULL;
-
- if (app->a11y_bus_pid != 0)
- return FALSE;
-
- if (g_file_test (SYSCONFDIR"/at-spi2/accessibility.conf", G_FILE_TEST_EXISTS))
- config_path = "--config-file="SYSCONFDIR"/at-spi2/accessibility.conf";
- else
- config_path = "--config-file="DATADIR"/defaults/at-spi2/accessibility.conf";
-
- argv[1] = config_path;
if (pipe (app->pipefd) < 0)
g_error ("Failed to create pipe: %s", strerror (errno));
-
+
+ g_clear_pointer (&app->a11y_launch_error_message, g_free);
+
if (!g_spawn_async (NULL,
argv,
NULL,
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
- setup_bus_child,
+ setup_bus_child_daemon,
app,
&pid,
&error))
@@ -335,6 +333,138 @@ ensure_a11y_bus (A11yBusLauncher *app)
app->a11y_bus_address = g_strchomp (g_strdup (addr_buf));
g_debug ("a11y bus address: %s", app->a11y_bus_address);
+ return TRUE;
+
+error:
+ close (app->pipefd[0]);
+ close (app->pipefd[1]);
+ app->state = A11Y_BUS_STATE_ERROR;
+
+ return FALSE;
+}
+#else
+static gboolean
+ensure_a11y_bus_daemon (A11yBusLauncher *app, char *config_path)
+{
+ return FALSE;
+}
+#endif
+
+#ifdef DBUS_BROKER
+static void
+setup_bus_child_broker (gpointer data)
+{
+ A11yBusLauncher *app = data;
+ gchar *pid_str;
+ (void) app;
+
+ dup2 (app->listenfd, 3);
+ close (app->listenfd);
+ g_setenv("LISTEN_FDS", "1", TRUE);
+
+ pid_str = g_strdup_printf("%u", getpid());
+ g_setenv("LISTEN_PID", pid_str, TRUE);
+ g_free(pid_str);
+
+ /* Tell the bus process to exit if this process goes away */
+ prctl (PR_SET_PDEATHSIG, SIGTERM);
+}
+
+static gboolean
+ensure_a11y_bus_broker (A11yBusLauncher *app, char *config_path)
+{
+ char *argv[] = { DBUS_BROKER, config_path, "--scope", "user", NULL };
+ struct sockaddr_un addr = { .sun_family = AF_UNIX };
+ socklen_t addr_len = sizeof(addr);
+ GPid pid;
+ GError *error = NULL;
+
+ if ((app->listenfd = socket (PF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0)) < 0)
+ g_error ("Failed to create listening socket: %s", strerror (errno));
+
+ if (bind (app->listenfd, (struct sockaddr *)&addr, sizeof(sa_family_t)) < 0)
+ g_error ("Failed to bind listening socket: %s", strerror (errno));
+
+ if (getsockname (app->listenfd, (struct sockaddr *)&addr, &addr_len) < 0)
+ g_error ("Failed to get socket name for listening socket: %s", strerror(errno));
+
+ if (listen (app->listenfd, 1024) < 0)
+ g_error ("Failed to listen on socket: %s", strerror(errno));
+
+ g_clear_pointer (&app->a11y_launch_error_message, g_free);
+
+ if (!g_spawn_async (NULL,
+ argv,
+ NULL,
+ G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
+ setup_bus_child_broker,
+ app,
+ &pid,
+ &error))
+ {
+ app->a11y_bus_pid = -1;
+ app->a11y_launch_error_message = g_strdup (error->message);
+ g_clear_error (&error);
+ goto error;
+ }
+
+ close (app->listenfd);
+ app->listenfd = -1;
+
+ g_child_watch_add (pid, on_bus_exited, app);
+ app->a11y_bus_pid = pid;
+ g_debug ("Launched a11y bus, child is %ld", (long) pid);
+ app->state = A11Y_BUS_STATE_RUNNING;
+
+ app->a11y_bus_address = g_strconcat("unix:abstract=", addr.sun_path + 1, NULL);
+ g_debug ("a11y bus address: %s", app->a11y_bus_address);
+
+ return TRUE;
+
+error:
+ close (app->listenfd);
+ app->state = A11Y_BUS_STATE_ERROR;
+
+ return FALSE;
+}
+#else
+static gboolean
+ensure_a11y_bus_broker (A11yBusLauncher *app, char *config_path)
+{
+ return FALSE;
+}
+#endif
+
+static gboolean
+ensure_a11y_bus (A11yBusLauncher *app)
+{
+ char *config_path = NULL;
+ gboolean success = FALSE;
+
+ if (app->a11y_bus_pid != 0)
+ return FALSE;
+
+ if (g_file_test (SYSCONFDIR"/at-spi2/accessibility.conf", G_FILE_TEST_EXISTS))
+ config_path = "--config-file="SYSCONFDIR"/at-spi2/accessibility.conf";
+ else
+ config_path = "--config-file="DATADIR"/defaults/at-spi2/accessibility.conf";
+
+#ifdef WANT_DBUS_BROKER
+ success = ensure_a11y_bus_broker (app, config_path);
+ if (!success)
+ {
+ if (!ensure_a11y_bus_daemon (app, config_path))
+ return FALSE;
+ }
+#else
+ success = ensure_a11y_bus_daemon (app, config_path);
+ if (!success)
+ {
+ if (!ensure_a11y_bus_broker (app, config_path))
+ return FALSE;
+ }
+#endif
+
#ifdef HAVE_X11
{
Display *display = XOpenDisplay (NULL);
@@ -353,13 +483,6 @@ ensure_a11y_bus (A11yBusLauncher *app)
#endif
return TRUE;
-
- error:
- close (app->pipefd[0]);
- close (app->pipefd[1]);
- app->state = A11Y_BUS_STATE_ERROR;
-
- return FALSE;
}
static void
@@ -695,6 +818,15 @@ already_running ()
static GSettings *
get_schema (const gchar *name)
{
+#if GLIB_CHECK_VERSION (2, 32, 0)
+ GSettingsSchemaSource *source = g_settings_schema_source_get_default ();
+ GSettingsSchema *schema = g_settings_schema_source_lookup (source, name, FALSE);
+
+ if (schema == NULL)
+ return NULL;
+
+ return g_settings_new_full (schema, NULL, NULL);
+#else
const char * const *schemas = NULL;
gint i;
@@ -706,13 +838,13 @@ get_schema (const gchar *name)
}
return NULL;
+#endif
}
static void
gsettings_key_changed (GSettings *gsettings, const gchar *key, void *user_data)
{
gboolean new_val = g_settings_get_boolean (gsettings, key);
- A11yBusLauncher *app = user_data;
if (!strcmp (key, "toolkit-accessibility"))
handle_a11y_enabled_change (_global_app, new_val, FALSE);
@@ -724,10 +856,6 @@ int
main (int argc,
char **argv)
{
- GError *error = NULL;
- GMainLoop *loop;
- GDBusConnection *session_bus;
- int name_owner_id;
gboolean a11y_set = FALSE;
gboolean screen_reader_set = FALSE;
gint i;
@@ -783,14 +911,15 @@ main (int argc,
introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
g_assert (introspection_data != NULL);
- name_owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
- "org.a11y.Bus",
- G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT,
- on_bus_acquired,
- on_name_acquired,
- on_name_lost,
- _global_app,
- NULL);
+ _global_app->name_owner_id =
+ g_bus_own_name (G_BUS_TYPE_SESSION,
+ "org.a11y.Bus",
+ G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT,
+ on_bus_acquired,
+ on_name_acquired,
+ on_name_lost,
+ _global_app,
+ NULL);
g_main_loop_run (_global_app->loop);
diff --git a/bus/meson.build b/bus/meson.build
index 909103c..5c7e03d 100644
--- a/bus/meson.build
+++ b/bus/meson.build
@@ -31,8 +31,13 @@ configure_file(input: 'at-spi-dbus-bus.service.in',
install: true,
install_dir: systemd_user_dir)
+launcher_args = [
+ '-DSYSCONFDIR="@0@"'.format(atspi_sysconfdir),
+ '-DDATADIR="@0@"'.format(atspi_datadir),
+ ]
+
if get_option('dbus_daemon') != 'default'
- dbus_daemon = get_option('dbus_daemon')
+ launcher_args += '-DDBUS_DAEMON="@0@"'.format(get_option('dbus_daemon'))
else
dbus_daemon = find_program('dbus-daemon',
'/sbin/dbus-daemon',
@@ -40,16 +45,29 @@ else
'/libexec/dbus-daemon',
'/usr/libexec/dbus-daemon',
'/usr/pkg/bin/dbus-daemon',
- required: true).path()
+ required: false)
+ if dbus_daemon.found()
+ launcher_args += '-DDBUS_DAEMON="@0@"'.format(dbus_daemon.path())
+ endif
+endif
+
+if get_option('dbus_broker') != 'default'
+ launcher_args += '-DDBUS_BROKER="@0@"'.format(get_option('dbus_broker'))
+else
+ dbus_broker = find_program('dbus-broker-launch',
+ required: false)
+ if dbus_broker.found()
+ launcher_args += '-DDBUS_BROKER="@0@"'.format(dbus_broker.path())
+ endif
+endif
+
+if get_option('default_bus') == 'dbus-broker'
+ launcher_args += '-DWANT_DBUS_BROKER'
endif
executable('at-spi-bus-launcher', 'at-spi-bus-launcher.c',
include_directories: [ root_inc, include_directories('.') ],
dependencies: [ gio_dep, x11_deps ],
- c_args: [
- '-DSYSCONFDIR="@0@"'.format(atspi_sysconfdir),
- '-DDATADIR="@0@"'.format(atspi_datadir),
- '-DDBUS_DAEMON="@0@"'.format(dbus_daemon),
- ],
+ c_args: launcher_args,
install: true,
install_dir: atspi_libexecdir)
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index a84dcbd..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,188 +0,0 @@
-AC_INIT([at-spi2-core], [2.26.1], [accessibility-atspi@lists.linux-foundation.org])
-AC_PREREQ([2.59])
-AC_CONFIG_AUX_DIR(config)
-AC_CONFIG_MACRO_DIR([m4])
-
-AT_SPI_CORE_MAJOR_VERSION=0
-AT_SPI_CORE_MINOR_VERSION=1
-AT_SPI_CORE_MICRO_VERSION=3
-AT_SPI_CORE_VERSION="$AT_SPI_CORE_MAJOR_VERSION.$AT_SPI_CORE_MINOR_VERSION"
-AC_SUBST(AT_SPI_CORE_VERSION)
-
-LT_RELEASE=$AT_SPI_CORE_VERSION
-LT_CURRENT=0
-LT_REVISION=1
-LT_AGE=0
-LT_VERSION_INFO='-version-info ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}'
-AC_SUBST(LT_VERSION_INFO)
-AC_SUBST(LT_RELEASE)
-AC_SUBST(LT_CURRENT)
-AC_SUBST(LT_REVISION)
-AC_SUBST(LT_AGE)
-
-AM_INIT_AUTOMAKE([1.13 -Wall -Wno-portability foreign subdir-objects no-dist-gzip dist-xz])
-
-# Support silent build rules. Disable
-# by either passing --disable-silent-rules to configure or passing V=1
-# to make
-AM_SILENT_RULES([yes])
-
-AM_PROG_CC_C_O
-LT_INIT([disable-static])
-PKG_PROG_PKG_CONFIG
-
-AC_CONFIG_HEADERS([config.h])
-
-AC_PROG_SED
-
-AM_GNU_GETTEXT_VERSION([0.19.8])
-AM_GNU_GETTEXT([external])
-
-GETTEXT_PACKAGE="${PACKAGE}"
-AC_SUBST(GETTEXT_PACKAGE)
-AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
- ["$GETTEXT_PACKAGE"],
- [The prefix for our gettext translation domains.])
-
-PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.0])
-AC_SUBST(DBUS_LIBS)
-AC_SUBST(DBUS_CFLAGS)
-
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.36.0])
-AC_SUBST(GLIB_LIBS)
-AC_SUBST(GLIB_CFLAGS)
-
-# Use pkg-config to find the glib-mkenums script
-GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
-AC_SUBST(GLIB_MKENUMS)
-
-PKG_CHECK_MODULES(GOBJ, [gobject-2.0 >= 2.0.0])
-AC_SUBST(GOBJ_LIBS)
-AC_SUBST(GOBJ_CFLAGS)
-
-PKG_CHECK_MODULES(GIO, [gio-2.0 >= 2.28])
-AC_SUBST(GIO_LIBS)
-AC_SUBST(GIO_CFLAGS)
-
-# --------------------------------------------------------------------
-# Find DL functionality
-
-AC_CHECK_LIB(c, dlopen, DL_LIBS="",
- AC_CHECK_LIB(dl, dlopen, DL_LIBS="-ldl",
- AC_MSG_ERROR([Could not find a library with the dlopen function])
- )
-)
-
-AC_SUBST(DL_LIBS)
-
-AC_ARG_ENABLE(x11,
- [AS_HELP_STRING([--disable-x11],
- [disable the X11 backend])],,
- [enable_x11=auto])
-
-AS_IF([test "x$enable_x11" = xno], [
- AM_CONDITIONAL(USE_X11, false)
-], [
- PKG_CHECK_MODULES(X11, [x11], [
- AC_DEFINE(HAVE_X11, 1, [Define to use X11])
- AC_SUBST(HAVE_X11)
- have_x11=yes
- ], [
- AS_IF([test "x$enable_x11" = xyes], [
- AC_MSG_ERROR([Unable to find X11 development files])
- ])
- have_x11=no
- ])
-
- # Check for additional X11 extensions
- AS_IF([test "x$have_x11" = xyes], [
- # XTest (mandatory)
- PKG_CHECK_MODULES(XTST, [xtst])
- X11_CFLAGS="$X11_CFLAGS $XTST_CFLAGS"
- X11_LIBS="$X11_LIBS $XTST_LIBS"
-
- # XInput (mandatory)
- PKG_CHECK_MODULES(XINPUT, [xi])
- X11_CFLAGS="$X11_CFLAGS $XINPUT_CFLAGS"
- X11_LIBS="$X11_LIBS $XINPUT_LIBS"
-
- # XKB (optional)
- AC_CHECK_LIB(X11, XkbGetMap, [
- AC_DEFINE(HAVE_XKB, 1, [Define to use XKB])
- ], [:])
- ])
-
- AC_SUBST(X11_CFLAGS)
- AC_SUBST(X11_LIBS)
-
- AM_CONDITIONAL(USE_X11, test "x$have_x11" = xyes)
-])
-
-AC_ARG_WITH([dbus_daemondir],
- [AS_HELP_STRING([--with-dbus-daemondir=],
- [Directory where the DBUS daemon is installed])],
- [DBUS_DAEMON="$with_dbus_daemondir/dbus-daemon"],
- [AC_PATH_PROG([DBUS_DAEMON], [dbus-daemon], [XXXDBUSDAEMONNOTFOUND],
- [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR]dnl
-[/libexec$PATH_SEPARATOR/usr/libexec$PATH_SEPARATOR/usr/local/bin]dnl
-[$PATH_SEPARATOR/usr/pkg/bin])]
- )
-if test "$DBUS_DAEMON" = "XXXDBUSDAEMONNOTFOUND"; then
- DBUS_DAEMON = "$bindir/dbus-daemon"
- AC_MSG_WARN([at-spi2 relies on dbus, and the dbus-daemon was not found])
- AC_MSG_WARN([we assume that it will be installed in "$bindir"])
-fi
-AC_SUBST(DBUS_DAEMON)
-
-AC_ARG_WITH(dbus-services,
- [AS_HELP_STRING([--with-dbus-services=],
- [where D-BUS services directory is])])
-if ! test -z "$with_dbus_services" ; then
- DBUS_SERVICES_DIR="$with_dbus_services"
-else
- DBUS_SERVICES_DIR="$datadir/dbus-1/services"
-fi
-AC_SUBST(DBUS_SERVICES_DIR)
-
-GOBJECT_INTROSPECTION_CHECK([1.32.0])
-
-AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
-
-dnl find sizes & alignments
-orig_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $DBUS_CFLAGS"
-AC_CHECK_ALIGNOF(char)
-AC_CHECK_ALIGNOF(dbus_bool_t, [#include ])
-AC_CHECK_ALIGNOF(dbus_int16_t, [#include ])
-AC_CHECK_ALIGNOF(dbus_int32_t, [#include ])
-AC_CHECK_ALIGNOF(dbus_int64_t, [#include ])
-AC_CHECK_ALIGNOF(double, [#include ])
-AC_CHECK_ALIGNOF(dbind_pointer, [AC_INCLUDES_DEFAULT
-typedef void *dbind_pointer;])
-AC_CHECK_ALIGNOF(dbind_struct, [AC_INCLUDES_DEFAULT
-typedef struct {char s1;} dbind_struct;])
-
-GTK_DOC_CHECK([1.25])
-
-if test "x$GCC" = xyes; then
- CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
-fi
-
-CPPFLAGS=$orig_CPPFLAGS
-
-AC_CONFIG_FILES([
- Makefile
- po/Makefile.in
- xml/Makefile
- dbind/Makefile
- atspi/Makefile
- registryd/Makefile
- bus/Makefile
- doc/Makefile
- doc/libatspi/Makefile
- doc/libatspi/version.xml
- test/Makefile
- atspi-2.pc
-])
-
-AC_OUTPUT
diff --git a/dbind/Makefile.am b/dbind/Makefile.am
deleted file mode 100644
index 6594e3e..0000000
--- a/dbind/Makefile.am
+++ /dev/null
@@ -1,27 +0,0 @@
-noinst_LTLIBRARIES = libdbind.la
-
-AM_CPPFLAGS = \
- -DG_LOG_DOMAIN=\"dbind\" \
- -I$(top_srcdir) \
- $(WARN_CFLAGS) \
- $(DBUS_CFLAGS) \
- $(GLIB_CFLAGS)
-
-libdbind_la_SOURCES = \
- dbind.h \
- dbind.c \
- dbind-any.h \
- dbind-any.c
-libdbind_la_LIBADD = $(DBUS_LIBS) $(GLIB_LIBS)
-
-TESTS = dbtest
-
-check_PROGRAMS = dbtest
-dbtest_SOURCES = dbtest.c ../atspi/atspi-gmain.c
-dbtest_LDFLAGS = libdbind.la
-dbtest_LDADD = $(DBUS_LIBS)
-
-EXTRA_DIST = \
- meson.build
-
--include $(top_srcdir)/git.mk
diff --git a/dbind/dbtest.c b/dbind/dbtest.c
index abd241a..42c1919 100644
--- a/dbind/dbtest.c
+++ b/dbind/dbtest.c
@@ -27,7 +27,7 @@
#define DESKICE_PATH "/Novell/ICEDesktop/Daemon"
#define DESKICE_NAMESPACE "Novell.ICEDesktop.Daemon"
-void marshal (DBusMessage *msg, char *type, void *ptr)
+void marshal (DBusMessage *msg, const char *type, void *ptr)
{
DBusMessageIter iter;
@@ -35,7 +35,7 @@ void marshal (DBusMessage *msg, char *type, void *ptr)
dbind_any_marshal (&iter, &type, &ptr);
}
-void demarshal (DBusMessage *msg, char *type, void *ptr)
+void demarshal (DBusMessage *msg, const char *type, void *ptr)
{
DBusMessageIter iter;
@@ -317,8 +317,8 @@ void test_twovals ()
DBusMessage *msg;
DBusMessageIter iter;
TwoVal i, o;
- char *type_twoval = TYPEOF_TWOVAL;
- char *type;
+ const char *type_twoval = TYPEOF_TWOVAL;
+ const char *type;
void *ptr;
msg = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL);
diff --git a/dbind/meson.build b/dbind/meson.build
index e122645..5a9f02d 100644
--- a/dbind/meson.build
+++ b/dbind/meson.build
@@ -3,12 +3,10 @@ dbind_sources = [
'dbind-any.c',
]
-dbind = static_library('dbind', dbind_sources,
- include_directories: root_inc,
- dependencies: [ libdbus_dep, glib_dep ],
- c_args: [ '-DG_LOG_DOMAIN="dbind"' ])
-
-dbind_dep = declare_dependency(link_with: dbind)
+dbind_dep = declare_dependency(sources: dbind_sources,
+ include_directories: root_inc,
+ compile_args: [ '-DG_LOG_DOMAIN="dbind"' ],
+ dependencies: [ libdbus_dep, glib_dep ])
test('dbind-test',
executable('dbind-test', [ 'dbtest.c', '../atspi/atspi-gmain.c' ],
diff --git a/doc/Makefile.am b/doc/Makefile.am
deleted file mode 100644
index b478520..0000000
--- a/doc/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-
-SUBDIRS=libatspi
-
--include $(top_srcdir)/git.mk
diff --git a/doc/libatspi/libatspi-docs.sgml b/doc/libatspi/libatspi-docs.sgml
index 8b9ff0d..935767c 100644
--- a/doc/libatspi/libatspi-docs.sgml
+++ b/doc/libatspi/libatspi-docs.sgml
@@ -42,8 +42,6 @@
-
-
diff --git a/doc/libatspi/libatspi-sections.txt b/doc/libatspi/libatspi-sections.txt
index 78abe76..14304ff 100644
--- a/doc/libatspi/libatspi-sections.txt
+++ b/doc/libatspi/libatspi-sections.txt
@@ -1,10 +1,8 @@
atspi-text
AtspiRange
-ATSPI_TYPE_RANGE
atspi_range_copy
AtspiTextRange
-ATSPI_TYPE_TEXT_RANGE
atspi_text_get_type
AtspiText
atspi_text_range_get_type
@@ -29,12 +27,17 @@ atspi_text_get_selection
atspi_text_add_selection
atspi_text_remove_selection
atspi_text_set_selection
+atspi_text_get_string_at_offset
+atspi_text_get_text_attribute_value
+atspi_text_get_text_attributes
ATSPI_TEXT
ATSPI_IS_TEXT
ATSPI_TYPE_TEXT
atspi_range_get_type
ATSPI_TEXT_GET_IFACE
+ATSPI_TYPE_RANGE
+ATSPI_TYPE_TEXT_RANGE
@@ -97,6 +100,9 @@ AtspiAction
atspi_action_get_n_actions
atspi_action_get_description
atspi_action_get_key_binding
+atspi_action_get_action_description
+atspi_action_get_action_name
+atspi_action_get_localized_name
atspi_action_get_name
atspi_action_do_action
@@ -161,6 +167,10 @@ AtspiDocument
atspi_document_get_locale
atspi_document_get_attribute_value
atspi_document_get_attributes
+atspi_document_get_current_page_number
+atspi_document_get_document_attribute_value
+atspi_document_get_document_attributes
+atspi_document_get_page_count
ATSPI_DOCUMENT
ATSPI_IS_DOCUMENT
@@ -207,6 +217,8 @@ atspi_accessible_get_attributes_as_array
atspi_accessible_get_locale
atspi_accessible_get_toolkit_name
atspi_accessible_get_toolkit_version
+atspi_accessible_get_atspi_version
+atspi_accessible_get_id
atspi_accessible_get_application
atspi_accessible_get_action
atspi_accessible_get_collection
@@ -218,8 +230,24 @@ atspi_accessible_get_hypertext
atspi_accessible_get_image
atspi_accessible_get_selection
atspi_accessible_get_table
+atspi_accessible_get_table_cell
atspi_accessible_get_text
atspi_accessible_get_value
+atspi_accessible_get_object_locale
+atspi_accessible_set_cache_mask
+atspi_accessible_clear_cache
+atspi_accessible_get_process_id
+atspi_accessible_get_action_iface
+atspi_accessible_get_collection_iface
+atspi_accessible_get_component_iface
+atspi_accessible_get_document_iface
+atspi_accessible_get_editable_text_iface
+atspi_accessible_get_hypertext_iface
+atspi_accessible_get_image_iface
+atspi_accessible_get_selection_iface
+atspi_accessible_get_table_iface
+atspi_accessible_get_text_iface
+atspi_accessible_get_value_iface
atspi_accessible_get_interfaces
ATSPI_ACCESSIBLE
@@ -229,6 +257,9 @@ atspi_accessible_get_type
ATSPI_ACCESSIBLE_CLASS
ATSPI_IS_ACCESSIBLE_CLASS
ATSPI_ACCESSIBLE_GET_CLASS
+
+
+AtspiAccessiblePrivate
@@ -253,6 +284,20 @@ ATSPI_DEVICE_LISTENER_GET_CLASS
+atspi-hypertext
+AtspiHypertext
+atspi_hypertext_get_n_links
+atspi_hypertext_get_link
+atspi_hypertext_get_link_index
+
+ATSPI_HYPERTEXT
+ATSPI_IS_HYPERTEXT
+ATSPI_TYPE_HYPERTEXT
+atspi_hypertext_get_type
+ATSPI_HYPERTEXT_GET_IFACE
+
+
+
atspi-hyperlink
AtspiHyperlink
AtspiHyperlink
@@ -278,7 +323,6 @@ ATSPI_HYPERLINK_GET_CLASS
atspi-editabletext
AtspiEditableText
-atspi_editable_text_set_attributes
atspi_editable_text_insert_text
atspi_editable_text_copy_text
atspi_editable_text_cut_text
@@ -290,6 +334,8 @@ ATSPI_IS_EDITABLE_TEXT
ATSPI_TYPE_EDITABLE_TEXT
atspi_editable_text_get_type
ATSPI_EDITABLE_TEXT_GET_IFACE
+
+atspi_editable_text_set_attributes
@@ -356,12 +402,13 @@ atspi_table_cell_get_position
atspi_table_cell_get_row_column_span
atspi_table_cell_get_table
-ATSPI_TABLE
-ATSPI_IS_TABLE
-ATSPI_TYPE_TABLE
-atspi_table_get_type
-ATSPI_TABLE_GET_IFACE
+ATSPI_TABLE_CELL
+ATSPI_IS_TABLE_CELL
+ATSPI_TYPE_TABLE_CELL
+atspi_table_cell_get_type
+ATSPI_TABLE_CELL_GET_IFACE
+
atspi-selection
AtspiSelection
@@ -393,7 +440,9 @@ atspi_event_listener_new
atspi_event_listener_new_simple
atspi_event_listener_register
atspi_event_listener_register_from_callback
+atspi_event_listener_register_from_callback_full
atspi_event_listener_register_no_data
+atspi_event_listener_register_full
atspi_event_listener_deregister
atspi_event_listener_deregister_from_callback
atspi_event_listener_deregister_no_data
@@ -408,20 +457,6 @@ ATSPI_EVENT_LISTENER_GET_CLASS
-atspi-hypertext
-AtspiHypertext
-atspi_hypertext_get_n_links
-atspi_hypertext_get_link
-atspi_hypertext_get_link_index
-
-ATSPI_HYPERTEXT
-ATSPI_IS_HYPERTEXT
-ATSPI_TYPE_HYPERTEXT
-atspi_hypertext_get_type
-ATSPI_HYPERTEXT_GET_IFACE
-
-
-
atspi-component
AtspiRect
ATSPI_TYPE_RECT
@@ -441,6 +476,11 @@ atspi_component_get_layer
atspi_component_get_mdi_z_order
atspi_component_grab_focus
atspi_component_get_alpha
+atspi_component_scroll_to
+atspi_component_scroll_to_point
+atspi_component_set_extents
+atspi_component_set_position
+atspi_component_set_size
ATSPI_COMPONENT
ATSPI_IS_COMPONENT
@@ -465,20 +505,6 @@ atspi_generate_mouse_event
atspi-types
-AtspiAccessible
-AtspiAction
-AtspiCollection
-AtspiComponent
-AtspiDocument
-AtspiEditableText
-AtspiHyperlink
-AtspiHypertext
-AtspiImage
-AtspiSelection
-AtspiTable
-AtspiTableCell
-AtspiText
-AtspiValue
AtspiControllerEventMask
AtspiKeyMaskType
AtspiKeyEventMask
@@ -487,9 +513,13 @@ AtspiDeviceEvent
AtspiEventListenerMode
AtspiKeyDefinition
AtspiEvent
-ATSPI_TYPE_EVENT
AtspiKeystrokeListener
AtspiKeyListenerSyncType
+
+
+ATSPI_TYPE_EVENT
+atspi_device_event_get_type
+atspi_key_listener_sync_type_get_type
@@ -506,6 +536,7 @@ AtspiCollectionTreeTraversalType
ATSPI_TREETRAVERSALTYPE
AtspiComponentLayer
ATSPI_COMPONENTLAYER_COUNT
+AtspiTextGranularity
AtspiTextBoundaryType
ATSPI_TEXT_BOUNDARY_TYPE_COUNT
AtspiTextClipType
@@ -524,40 +555,83 @@ AtspiRelationType
ATSPI_RELATIONTYPE_COUNT
AtspiRole
ATSPI_ROLE_COUNT
+AtspiCache
+AtspiScrollType
+ATSPI_SCROLLTYPE_COUNT
+
+
+atspi_cache_get_type
+atspi_collection_match_type_get_type
+atspi_collection_sort_order_get_type
+atspi_collection_tree_traversal_type_get_type
+atspi_component_layer_get_type
+atspi_coord_type_get_type
+atspi_event_type_get_type
+atspi_key_event_type_get_type
+atspi_key_synth_type_get_type
+atspi_locale_type_get_type
+atspi_modifier_type_get_type
+atspi_modifier_type_get_type
+atspi_relation_type_get_type
+atspi_role_get_type
+atspi_scroll_type_get_type
+atspi_state_type_get_type
+atspi_text_boundary_type_get_type
+atspi_text_clip_type_get_type
+atspi_text_granularity_get_type
+ATSPI_TYPE_CACHE
+ATSPI_TYPE_COLLECTION_MATCH_TYPE
+ATSPI_TYPE_COLLECTION_SORT_ORDER
+ATSPI_TYPE_COLLECTION_TREE_TRAVERSAL_TYPE
+ATSPI_TYPE_COMPONENT_LAYER
+ATSPI_TYPE_COORD_TYPE
+ATSPI_TYPE_DEVICE_EVENT
+ATSPI_TYPE_EVENT_TYPE
+ATSPI_TYPE_KEY_EVENT_TYPE
+ATSPI_TYPE_KEY_LISTENER_SYNC_TYPE
+ATSPI_TYPE_KEY_SYNTH_TYPE
+ATSPI_TYPE_LOCALE_TYPE
+ATSPI_TYPE_MODIFIER_TYPE
+ATSPI_TYPE_RELATION_TYPE
+ATSPI_TYPE_ROLE
+ATSPI_TYPE_SCROLL_TYPE
+ATSPI_TYPE_STATE_TYPE
+ATSPI_TYPE_TEXT_BOUNDARY_TYPE
+ATSPI_TYPE_TEXT_CLIP_TYPE
+ATSPI_TYPE_TEXT_GRANULARITY
atspi-misc
atspi_init
+atspi_is_initialized
+atspi_set_timeout
+atspi_set_main_context
atspi_event_main
atspi_event_quit
atspi_exit
-
-
-atspi-misc-private
-ATSPI_CACHE_PARENT
+
+atspi_main_loop
+atspi_get_a11y_bus
+atspi_dbus_connection_setup_with_g_main
+atspi_dbus_server_setup_with_g_main
+atspi_bus_registry
ATSPI_CACHE_CHILDREN
-ATSPI_CACHE_NAME
ATSPI_CACHE_DESCRIPTION
-ATSPI_CACHE_STATES
-ATSPI_CACHE_ROLE
ATSPI_CACHE_INTERFACES
-AtspiReference
-ATSPI_DBUS_NAME_REGISTRY
-ATSPI_DBUS_PATH_REGISTRY
-ATSPI_DBUS_INTERFACE_REGISTRY
-ATSPI_DBUS_PATH_NULL
-ATSPI_DBUS_PATH_ROOT
-ATSPI_DBUS_PATH_DEC
-ATSPI_DBUS_INTERFACE_DEC
-ATSPI_DBUS_INTERFACE_DEVICE_EVENT_LISTENER
-ATSPI_DBUS_INTERFACE_CACHE
+ATSPI_CACHE_NAME
+ATSPI_CACHE_PARENT
+ATSPI_CACHE_ROLE
+ATSPI_CACHE_STATES
ATSPI_DBUS_INTERFACE_ACCESSIBLE
ATSPI_DBUS_INTERFACE_ACTION
ATSPI_DBUS_INTERFACE_APPLICATION
+ATSPI_DBUS_INTERFACE_CACHE
ATSPI_DBUS_INTERFACE_COLLECTION
ATSPI_DBUS_INTERFACE_COMPONENT
+ATSPI_DBUS_INTERFACE_DEC
+ATSPI_DBUS_INTERFACE_DEVICE_EVENT_LISTENER
ATSPI_DBUS_INTERFACE_DOCUMENT
ATSPI_DBUS_INTERFACE_EDITABLE_TEXT
ATSPI_DBUS_INTERFACE_EVENT_KEYBOARD
@@ -566,18 +640,22 @@ ATSPI_DBUS_INTERFACE_EVENT_OBJECT
ATSPI_DBUS_INTERFACE_HYPERLINK
ATSPI_DBUS_INTERFACE_HYPERTEXT
ATSPI_DBUS_INTERFACE_IMAGE
+ATSPI_DBUS_INTERFACE_REGISTRY
ATSPI_DBUS_INTERFACE_SELECTION
+ATSPI_DBUS_INTERFACE_SOCKET
ATSPI_DBUS_INTERFACE_TABLE
+ATSPI_DBUS_INTERFACE_TABLE_CELL
ATSPI_DBUS_INTERFACE_TEXT
ATSPI_DBUS_INTERFACE_VALUE
-ATSPI_DBUS_INTERFACE_SOCKET
-atspi_path_dec
-atspi_path_registry
-atspi_path_root
-atspi_bus_registry
+ATSPI_DBUS_NAME_REGISTRY
+ATSPI_DBUS_PATH_DEC
+ATSPI_DBUS_PATH_NULL
+ATSPI_DBUS_PATH_REGISTRY
+ATSPI_DBUS_PATH_ROOT
atspi_interface_accessible
atspi_interface_action
atspi_interface_application
+atspi_interface_cache
atspi_interface_collection
atspi_interface_component
atspi_interface_dec
@@ -592,12 +670,13 @@ atspi_interface_selection
atspi_interface_table
atspi_interface_table_cell
atspi_interface_text
-atspi_interface_cache
atspi_interface_value
-
+atspi_no_cache
+atspi_path_dec
+atspi_path_registry
+atspi_path_root
+AtspiReference
+AtspiError
+ATSPI_ERROR
-
-atspi-listener-private
-atspi_dbus_handle_deviceEvent
-
diff --git a/doc/libatspi/tmpl/atspi-constants.sgml b/doc/libatspi/tmpl/atspi-constants.sgml
index 8763873..af2ec33 100644
--- a/doc/libatspi/tmpl/atspi-constants.sgml
+++ b/doc/libatspi/tmpl/atspi-constants.sgml
@@ -39,6 +39,26 @@ Constant definitions needed by multiple interfaces.
+
+
+
+
+
+@ATSPI_SCROLL_TOP_LEFT:
+@ATSPI_SCROLL_BOTTOM_RIGHT:
+@ATSPI_SCROLL_TOP_EDGE:
+@ATSPI_SCROLL_BOTTOM_EDGE:
+@ATSPI_SCROLL_LEFT_EDGE:
+@ATSPI_SCROLL_RIGHT_EDGE:
+@ATSPI_SCROLL_ANYWHERE:
+
+
+
+
+
+
+
+
@@ -46,6 +66,7 @@ Constant definitions needed by multiple interfaces.
@ATSPI_COORD_TYPE_SCREEN:
@ATSPI_COORD_TYPE_WINDOW:
+@ATSPI_COORD_TYPE_PARENT:
@@ -270,6 +291,8 @@ Constant definitions needed by multiple interfaces.
@ATSPI_KEY_PRESSRELEASE:
@ATSPI_KEY_SYM:
@ATSPI_KEY_STRING:
+@ATSPI_KEY_LOCKMODIFIERS:
+@ATSPI_KEY_UNLOCKMODIFIERS:
diff --git a/idl/component.didl b/idl/component.didl
index aa40e78..31cfbf0 100644
--- a/idl/component.didl
+++ b/idl/component.didl
@@ -54,7 +54,30 @@ interface org.freestandards.atspi.Component {
LAYER_WINDOW,
LAYER_LAST_DEFINED
}
-
+
+ /*
+ Describes where the object should be placed on the window.
+ */
+ enum uint32 ScrollType {
+ SCROLL_TOP_LEFT = 0,
+ SCROLL_BOTTOM_RIGHT,
+ SCROLL_TOP_EDGE,
+ SCROLL_BOTTOM_EDGE,
+ SCROLL_LEFT_EDGE,
+ SCROLL_RIGHT_EDGE,
+ SCROLL_ANYWHERE
+ }
+
+ /*
+ Specifies whether the coordinates are relative to the screen, to the
+ window, or to the parent object.
+ */
+ enum uint32 CoordType {
+ COORD_TYPE_SCREEN = 0,
+ COORD_TYPE_WINDOW,
+ COORD_TYPE_PARENT
+ }
+
/*
True if the specified point lies within the components bounding box.
*/
@@ -136,4 +159,20 @@ interface org.freestandards.atspi.Component {
method GetAlpha reply {
double alpha;
}
+
+ /*
+ Scroll this object so it becomes visible on the screen.
+ */
+ method ScrollTo {
+ ScrollType type;
+ }
+
+ /*
+ Scroll this object so it becomes visible on the screen at a given position.
+ */
+ method ScrollToPoint {
+ CoordType type;
+ int32 x;
+ int32 y;
+ }
}
diff --git a/idl/controller.didl b/idl/controller.didl
index 53b5f71..4519a0a 100644
--- a/idl/controller.didl
+++ b/idl/controller.didl
@@ -6,7 +6,9 @@ interface org.freestandards.atspi.DeviceEventController {
KEY_RELEASE,
KEY_PRESSRELEASE,
KEY_SYM,
- KEY_STRING
+ KEY_STRING,
+ KEY_LOCKMODIFIERS,
+ KEY_UNLOCKMODIFIERS
}
/*
diff --git a/meson.build b/meson.build
index 0cfdbef..351b207 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('at-spi2-core', 'c',
- version: '2.26.1',
+ version: '2.31.1',
license: 'LGPLv2.1+',
default_options: [
'buildtype=debugoptimized',
@@ -8,7 +8,7 @@ project('at-spi2-core', 'c',
],
meson_version: '>= 0.40.1')
-add_project_arguments([ '-D_POSIX_C_SOURCE', '-D_DEFAULT_SOURCE' ], language: 'c')
+add_project_arguments([ '-D_POSIX_C_SOURCE=200809L', '-D_DEFAULT_SOURCE' ], language: 'c')
atspi_gir_ns = 'Atspi'
@@ -109,20 +109,6 @@ xgettext = find_program('xgettext', required : false)
configure_file(output: 'config.h', configuration: at_spi_conf)
-# Compat variables for pkgconfig
-pkgconf = configuration_data()
-pkgconf.set('prefix', get_option('prefix'))
-pkgconf.set('exec_prefix', get_option('prefix'))
-pkgconf.set('libdir', atspi_libdir)
-pkgconf.set('includedir', atspi_includedir)
-pkgconf.set('VERSION', meson.project_version())
-
-configure_file(input: 'atspi-2.pc.in',
- output: 'atspi-2.pc',
- configuration: pkgconf,
- install: true,
- install_dir: join_paths(get_option('libdir'), 'pkgconfig'))
-
gnome = import('gnome')
subdir('dbind')
diff --git a/meson_options.txt b/meson_options.txt
index c9afe2f..f8ec862 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -6,6 +6,15 @@ option('dbus_daemon',
description: 'The path of the DBus daemon',
type: 'string',
value: 'default')
+option('dbus_broker',
+ description: 'The path of the DBus broker',
+ type: 'string',
+ value: 'default')
+option('default_bus',
+ description: 'The default DBus implementation to use',
+ type: 'combo',
+ choices: ['dbus-daemon', 'dbus-broker'],
+ value: 'dbus-daemon')
option('systemd_user_dir',
description: 'Location of the systemd user services',
type: 'string',
diff --git a/po/Makevars b/po/Makevars
deleted file mode 100644
index b40107f..0000000
--- a/po/Makevars
+++ /dev/null
@@ -1,78 +0,0 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-# package. (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.) Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright. The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = at-spi2-core authors
-
-# This tells whether or not to prepend "GNU " prefix to the package
-# name that gets inserted into the header of the $(DOMAIN).pot file.
-# Possible values are "yes", "no", or empty. If it is empty, try to
-# detect it automatically by scanning the files in $(top_srcdir) for
-# "GNU packagename" string.
-PACKAGE_GNU = no
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-# in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-# understood.
-# - Strings which make invalid assumptions about notation of date, time or
-# money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS = https://bugzilla.gnome.org/enter_bug.cgi?product=at-spi&keywords=I18N+L10N&component=at-spi2-core
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
-
-# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
-# context. Possible values are "yes" and "no". Set this to yes if the
-# package uses functions taking also a message context, like pgettext(), or
-# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
-USE_MSGCTXT = no
-
-# These options get passed to msgmerge.
-# Useful options are in particular:
-# --previous to keep previous msgids of translated messages,
-# --quiet to reduce the verbosity.
-MSGMERGE_OPTIONS =
-
-# These options get passed to msginit.
-# If you want to disable line wrapping when writing PO files, add
-# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
-# MSGINIT_OPTIONS.
-MSGINIT_OPTIONS =
-
-# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
-# has changed. Possible values are "yes" and "no". Set this to no if
-# the POT file is checked in the repository and the version control
-# program ignores timestamps.
-PO_DEPENDS_ON_POT = no
-
-# This tells whether or not to forcibly update $(DOMAIN).pot and
-# regenerate PO files on "make dist". Possible values are "yes" and
-# "no". Set this to no if the POT file and PO files are maintained
-# externally.
-DIST_DEPENDS_ON_UPDATE_PO = no
diff --git a/po/fr.po b/po/fr.po
index 6e1ba90..f0eb565 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -2,27 +2,27 @@
# Copyright (C) 2011 Listed translators
# This file is distributed under the same license as the at-spi2-core package.
# Claude Paroz , 2011.
+# Charles Monzat , 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: at-spi2-core master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=at-"
-"spi&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2014-02-03 23:50+0000\n"
-"PO-Revision-Date: 2014-03-11 22:53+0100\n"
-"Last-Translator: Claude Paroz \n"
-"Language-Team: GNOME French Team \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/at-spi2-core/issues\n"
+"POT-Creation-Date: 2018-10-05 04:46+0000\n"
+"PO-Revision-Date: 2018-11-14 18:35+0100\n"
+"Last-Translator: Charles Monzat \n"
+"Language-Team: français \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Gtranslator 3.30.0\n"
-#: ../atspi/atspi-component.c:325 ../atspi/atspi-misc.c:1034
-#: ../atspi/atspi-value.c:111
+#: atspi/atspi-component.c:326 atspi/atspi-misc.c:1073 atspi/atspi-value.c:111
msgid "The application no longer exists"
-msgstr "L'application n'existe plus"
+msgstr "Lâapplication nâexiste plus"
-#: ../atspi/atspi-misc.c:1777
+#: atspi/atspi-misc.c:1850
msgid "Attempted synchronous call where prohibited"
-msgstr "La tentative d'appel synchrone est interdite"
+msgstr "La tentative dâappel synchrone est interdite"
diff --git a/registryd/Makefile.am b/registryd/Makefile.am
deleted file mode 100644
index 6a4b1d8..0000000
--- a/registryd/Makefile.am
+++ /dev/null
@@ -1,68 +0,0 @@
-EXTRA_DIST = \
- meson.build
-
-libexec_PROGRAMS = at-spi2-registryd
-
-at_spi2_registryd_CFLAGS = \
- $(GLIB_CFLAGS) \
- $(GIO_CFLAGS) \
- $(DBUS_CFLAGS) \
- $(GOBJ_CFLAGS) \
- $(ATK_CFLAGS) \
- $(X11_CFLAGS) \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- -I$(top_builddir)/atspi \
- -DATSPI_INTROSPECTION_PATH=\"$(pkgdatadir)/$(DEFAULT_ATSPI_INTROSPECTION_PATH)\"
-
-at_spi2_registryd_LDADD = \
- ../atspi/libatspi.la \
- $(GLIB_LIBS) \
- $(GIO_LIBS) \
- $(DBUS_LIBS) \
- $(GOBJ_CFLAGS) \
- $(ATK_LIBS) \
- $(X11_LIBS) \
- $(DL_LIBS)
-
-at_spi2_registryd_SOURCES = \
- de-marshaller.h \
- de-marshaller.c \
- de-types.h \
- keymasks.h \
- paths.h \
- registry-main.c \
- registry.c \
- registry.h \
- introspection.h \
- introspection.c \
- deviceeventcontroller.c \
- deviceeventcontroller.h \
- reentrant-list.c \
- reentrant-list.h
-
-X11_SOURCES = \
- deviceeventcontroller-x11.c \
- display.h \
- display.c \
- event-source.c \
- event-source.h \
- ucs2keysym.c
-
-if USE_X11
-at_spi2_registryd_SOURCES += $(X11_SOURCES)
-else
-EXTRA_DIST += $(X11_SOURCES)
-endif
-
-servicedir=$(datadir)/dbus-1/accessibility-services
-service_in_files = org.a11y.atspi.Registry.service.in
-service_DATA = $(service_in_files:.service.in=.service)
-
-$(service_DATA): $(service_in_files) Makefile
- $(AM_V_GEN)$(SED) -e "s|[@]libexecdir[@]|$(libexecdir)|" $(srcdir)/$@.in > $@
-
-DISTCLEANFILES = org.a11y.atspi.Registry.service
-EXTRA_DIST += org.a11y.atspi.Registry.service.in
-
--include $(top_srcdir)/git.mk
diff --git a/registryd/de-types.h b/registryd/de-types.h
index a338e38..f08823c 100644
--- a/registryd/de-types.h
+++ b/registryd/de-types.h
@@ -47,6 +47,8 @@ typedef enum {
Accessibility_KEY_PRESSRELEASE,
Accessibility_KEY_SYM,
Accessibility_KEY_STRING,
+ Accessibility_KEY_LOCKMODIFIERS,
+ Accessibility_KEY_UNLOCKMODIFIERS,
} Accessibility_KeySynthType;
typedef struct _Accessibility_DeviceEvent Accessibility_DeviceEvent;
diff --git a/registryd/deviceeventcontroller-x11.c b/registryd/deviceeventcontroller-x11.c
index d9d9a6c..e5b8dfc 100644
--- a/registryd/deviceeventcontroller-x11.c
+++ b/registryd/deviceeventcontroller-x11.c
@@ -1018,8 +1018,10 @@ spi_dec_x11_synth_keycode_press (SpiDEController *controller,
{
unsigned int time = CurrentTime;
unsigned int bounce_delay;
+#ifdef THIS_IS_BROKEN
unsigned int elapsed_msec;
struct timeval tv;
+#endif
DEControllerPrivateData *priv = controller->priv;
spi_x_error_trap ();
@@ -1028,15 +1030,15 @@ spi_dec_x11_synth_keycode_press (SpiDEController *controller,
bounce_delay = xkb_get_bouncekeys_delay (controller);
if (bounce_delay)
{
+#ifdef THIS_IS_BROKEN
gettimeofday (&tv, NULL);
elapsed_msec =
(tv.tv_sec - priv->last_release_time.tv_sec) * 1000
+ (tv.tv_usec - priv->last_release_time.tv_usec) / 1000;
-#ifdef SPI_XKB_DEBUG
+# ifdef SPI_XKB_DEBUG
fprintf (stderr, "%d ms elapsed (%ld usec)\n", elapsed_msec,
(long) (tv.tv_usec - priv->last_release_time.tv_usec));
-#endif
-#ifdef THIS_IS_BROKEN
+# endif
if (elapsed_msec < bounce_delay)
time = bounce_delay - elapsed_msec + 1;
#else
@@ -1062,8 +1064,10 @@ spi_dec_x11_synth_keycode_release (SpiDEController *controller,
{
unsigned int time = CurrentTime;
unsigned int slow_delay;
+#ifdef THIS_IS_BROKEN_DUNNO_WHY
unsigned int elapsed_msec;
struct timeval tv;
+#endif
DEControllerPrivateData *priv = controller->priv;
spi_x_error_trap ();
@@ -1072,15 +1076,15 @@ spi_dec_x11_synth_keycode_release (SpiDEController *controller,
slow_delay = xkb_get_slowkeys_delay (controller);
if (slow_delay)
{
+#ifdef THIS_IS_BROKEN_DUNNO_WHY
gettimeofday (&tv, NULL);
elapsed_msec =
(tv.tv_sec - priv->last_press_time.tv_sec) * 1000
+ (tv.tv_usec - priv->last_press_time.tv_usec) / 1000;
-#ifdef SPI_XKB_DEBUG
+# ifdef SPI_XKB_DEBUG
fprintf (stderr, "%d ms elapsed (%ld usec)\n", elapsed_msec,
(long) (tv.tv_usec - priv->last_press_time.tv_usec));
-#endif
-#ifdef THIS_IS_BROKEN_DUNNO_WHY
+# endif
if (elapsed_msec < slow_delay)
time = slow_delay - elapsed_msec + 1;
#else
diff --git a/registryd/deviceeventcontroller.c b/registryd/deviceeventcontroller.c
index 0c965ef..4e25ad6 100644
--- a/registryd/deviceeventcontroller.c
+++ b/registryd/deviceeventcontroller.c
@@ -1762,6 +1762,12 @@ impl_generate_keyboard_event (DBusConnection *bus, DBusMessage *message, void *u
fprintf (stderr, "Keystring synthesis failure, string=%s\n",
keystring);
break;
+ case Accessibility_KEY_LOCKMODIFIERS:
+ spi_dec_plat_lock_modifiers (controller, keycode);
+ break;
+ case Accessibility_KEY_UNLOCKMODIFIERS:
+ spi_dec_plat_unlock_modifiers (controller, keycode);
+ break;
}
reply = dbus_message_new_method_return (message);
return reply;
diff --git a/registryd/reentrant-list.c b/registryd/reentrant-list.c
index 29bdfca..7f9a716 100644
--- a/registryd/reentrant-list.c
+++ b/registryd/reentrant-list.c
@@ -45,7 +45,7 @@ spi_re_entrant_list_delete_link (GList * const *element_ptr)
GList *next;
GList *element;
gboolean first_item;
- GList *dummy; /* suppress warning */
+ GList *dummy G_GNUC_UNUSED;
g_return_if_fail (element_ptr != NULL);
diff --git a/test/Makefile.am b/test/Makefile.am
deleted file mode 100644
index b76db0a..0000000
--- a/test/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-LDADD = $(top_builddir)/atspi/libatspi.la
-noinst_PROGRAMS = memory
-memory_SOURCES = memory.c
-memory_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) -I$(top_builddir)/atspi
-memory_CFLAGS = $(GLIB_CFLAGS) $(GOBJ_LIBS) $(DBUS_CFLAGS)
-memory_LDFLAGS =
-
--include $(top_srcdir)/git.mk
-
-EXTRA_DIST = meson.build
diff --git a/xml/Component.xml b/xml/Component.xml
index c67dde9..c1258d2 100644
--- a/xml/Component.xml
+++ b/xml/Component.xml
@@ -72,5 +72,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/Makefile.am b/xml/Makefile.am
deleted file mode 100644
index edb71d3..0000000
--- a/xml/Makefile.am
+++ /dev/null
@@ -1,41 +0,0 @@
-EXTRA_DIST = \
- Accessibility.xml \
- Accessible.xml \
- Action.xml \
- Application.xml \
- Cache.xml \
- Collection.xml \
- Component.xml \
- create-introspection.sh \
- DeviceEventController.xml \
- DeviceEventListener.xml \
- Document.xml \
- EditableText.xml \
- Event.xml \
- Hyperlink.xml \
- Hypertext.xml \
- Image.xml \
- Registry.xml \
- remove-annotations.xsl \
- Selection.xml \
- Socket.xml \
- Table.xml \
- Text.xml \
- Value.xml \
- versioned-introspection.py
-
-CLEANFILES = \
- introspection.c \
- introspection.h \
- Processed.xml
-
-#BUILT_SOURCES = spec.xml
-#CLEANFILES += spec.xml
-
-XML_SPEC = $(filter %.xml,$(EXTRA_DIST))
-
-spec.xml: $(XML_SPEC)
- xsltproc --xinclude $(top_srcdir)/tools/identity.xsl Accessibility.xml >spec.xml
-
-
--include $(top_srcdir)/git.mk
--
2.7.4
From f5f115439475eb34445b7ab3a952758a34e72d28 Mon Sep 17 00:00:00 2001
From: Jongmin Lee
Date: Thu, 14 Feb 2019 08:42:07 +0900
Subject: [PATCH 14/16] resolve build error in aarch64 and x86_64
Change-Id: I7cb193c626a19a818ed0c232d3cc788866679c82
---
packaging/at-spi2-core.spec | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/packaging/at-spi2-core.spec b/packaging/at-spi2-core.spec
index 74cb63b..b4ac7f0 100644
--- a/packaging/at-spi2-core.spec
+++ b/packaging/at-spi2-core.spec
@@ -73,7 +73,7 @@ to develop applications that require these.
cp %{SOURCE1001} .
%build
-meson build -Dwith-dbus-daemondir=%{_bindir} \
+meson --prefix /usr/ build -Dwith-dbus-daemondir=%{_bindir} \
%if !%{with x}
-Denable-x11=no \
%else
@@ -81,12 +81,14 @@ meson build -Dwith-dbus-daemondir=%{_bindir} \
%endif
-Denable-static=no
-(cd build && ninja)
+ninja -C build all
%install
find %{buildroot} -name '*.la' -or -name '*.a' | xargs rm -f
-(cd build && DESTDIR=%{buildroot} ninja install)
+export DESTDIR=%{buildroot}
+ninja -C build install
+
%find_lang %{name}
%clean
@@ -99,21 +101,21 @@ rm -fr %{buildroot}
%files -f %{name}.lang
%manifest %{name}.manifest
%defattr(-,root,root)
-/usr/local/libexec/at_spi2_tool
+%{_libexecdir}/at_spi2_tool
%doc AUTHORS README
%license COPYING
-/usr/local/libexec/at-spi-bus-launcher
-/usr/local/libexec/at-spi2-registryd
-/usr/local/share/defaults/at-spi2/accessibility.conf
-/usr/local/etc/xdg/autostart/at-spi-dbus-bus.desktop
-/usr/local/share/dbus-1/accessibility-services/org.a11y.atspi.Registry.service
-/usr/local/share/dbus-1/services/org.a11y.Bus.service
-/usr/local/lib/systemd/user/at-spi-dbus-bus.service
+%{_libexecdir}/at-spi-bus-launcher
+%{_libexecdir}/at-spi2-registryd
+%{_datadir}/defaults/at-spi2/accessibility.conf
+%{_sysconfdir}/xdg/autostart/at-spi-dbus-bus.desktop
+%{_datadir}/dbus-1/accessibility-services/org.a11y.atspi.Registry.service
+%{_datadir}/dbus-1/services/org.a11y.Bus.service
+%{_prefix}/lib/systemd/user/at-spi-dbus-bus.service
%files -n libatspi0
%manifest %{name}.manifest
%defattr(-, root, root)
-/usr/local/lib/libatspi.so.0*
+%{_libdir}/libatspi.so.0*
%files -n typelib-1_0-Atspi-2_0
%manifest %{name}.manifest
@@ -122,6 +124,6 @@ rm -fr %{buildroot}
%files devel
%manifest %{name}.manifest
%defattr(-, root, root)
-/usr/local/include/at-spi-2.0
-/usr/local/lib/libatspi.so
-/usr/local/lib/pkgconfig/atspi-2.pc
+%{_includedir}/at-spi-2.0
+%{_libdir}/libatspi.so
+%{_libdir}/pkgconfig/atspi-2.pc
--
2.7.4
From 2e7b47c984f7f7d96604e1d4badbe29b74ccca8f Mon Sep 17 00:00:00 2001
From: Radoslaw Cybulski
Date: Mon, 4 Mar 2019 13:09:32 +0100
Subject: [PATCH 15/16] Fix for invalid at-spi configuration
Fixes not working configuration (dbus-daemon binary not found), which
caused at-spi2-bus-launcher not to start.
Fixes crash due to missing schema for GSetting.
Change-Id: I5f1692144b4c7487f33739832780224707be001c
---
bus/at-spi-bus-launcher.c | 6 ++++--
packaging/at-spi2-core.spec | 2 +-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/bus/at-spi-bus-launcher.c b/bus/at-spi-bus-launcher.c
index f8ae02b..e42a26d 100644
--- a/bus/at-spi-bus-launcher.c
+++ b/bus/at-spi-bus-launcher.c
@@ -1,6 +1,6 @@
/* -*- mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
- *
- * at-spi-bus-launcher: Manage the a11y bus as a child process
+ *
+ * at-spi-bus-launcher: Manage the a11y bus as a child process
*
* Copyright 2011-2018 Red Hat, Inc.
*
@@ -929,6 +929,8 @@ get_schema (const gchar *name)
{
#if GLIB_CHECK_VERSION (2, 32, 0)
GSettingsSchemaSource *source = g_settings_schema_source_get_default ();
+ if (!source) return NULL;
+
GSettingsSchema *schema = g_settings_schema_source_lookup (source, name, FALSE);
if (schema == NULL)
diff --git a/packaging/at-spi2-core.spec b/packaging/at-spi2-core.spec
index b4ac7f0..7981bc8 100644
--- a/packaging/at-spi2-core.spec
+++ b/packaging/at-spi2-core.spec
@@ -73,7 +73,7 @@ to develop applications that require these.
cp %{SOURCE1001} .
%build
-meson --prefix /usr/ build -Dwith-dbus-daemondir=%{_bindir} \
+meson --prefix /usr/ build -Dwith-dbus-daemondir=%{_bindir} -Ddbus_daemon=/usr/bin/dbus-daemon \
%if !%{with x}
-Denable-x11=no \
%else
--
2.7.4
From 3f3b64df9928cfda09f68aa9554ed148deffd76a Mon Sep 17 00:00:00 2001
From: Radoslaw Cybulski
Date: Thu, 28 Mar 2019 14:02:03 +0100
Subject: [PATCH 16/16] Fix for missing -fPIE build flag
Adds -fPIE build flag to meson, which is required, because not ASLR
binaries won't be allowed to run on target.
Change-Id: I1f725eb4c7f39a32c43dd104255b16b0628d7a38
---
bus/meson.build | 2 ++
registryd/meson.build | 2 ++
test/meson.build | 2 ++
3 files changed, 6 insertions(+)
diff --git a/bus/meson.build b/bus/meson.build
index 459e652..75c6591 100644
--- a/bus/meson.build
+++ b/bus/meson.build
@@ -34,6 +34,7 @@ configure_file(input: 'at-spi-dbus-bus.service.in',
launcher_args = [
'-DSYSCONFDIR="@0@"'.format(atspi_sysconfdir),
'-DDATADIR="@0@"'.format(atspi_datadir),
+ '-fPIE'
]
if get_option('dbus_daemon') != 'default'
@@ -69,5 +70,6 @@ executable('at-spi-bus-launcher', 'at-spi-bus-launcher.c',
include_directories: [ root_inc, include_directories('.') ],
dependencies: [ gio_dep, x11_deps, app_svc_dep ],
c_args: launcher_args,
+ link_args: '-pie',
install: true,
install_dir: atspi_libexecdir)
diff --git a/registryd/meson.build b/registryd/meson.build
index eb8236e..be0fe95 100644
--- a/registryd/meson.build
+++ b/registryd/meson.build
@@ -32,6 +32,8 @@ endif
executable('at-spi2-registryd', registryd_sources,
dependencies: registryd_deps,
+ c_args: '-fPIE',
+ link_args: '-pie',
install: true,
install_dir: atspi_libexecdir)
diff --git a/test/meson.build b/test/meson.build
index ba6a296..e564e2a 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -9,6 +9,8 @@ at_spi2_tool_sources = [
executable('at_spi2_tool', at_spi2_tool_sources,
dependencies: [ atspi_dep, gio_dep ],
+ c_args: '-fPIE',
+ link_args: '-pie',
install: true,
install_dir: atspi_libexecdir)
--
2.7.4