From 70280c8010a04900fc0f9f67d08fc9464b639615 Mon Sep 17 00:00:00 2001 From: Radoslaw Cybulski Date: Wed, 23 Jan 2019 15:38:41 +0100 Subject: [PATCH] 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