Authors of AT-SPI D-Bus implementation
--------------------------------------
-Mike Gorse <mgorse@novell.com>
+Mike Gorse <mgorse@suse.com>
Mark Doffman <mark.doffman@codethink.co.uk>
- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
- Copyright (C) 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
-[This is the first released version of the library GPL. It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
Preamble
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
- This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it. You can use it for
-your libraries, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
-code. If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
- Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
- Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library. If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software. To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
- Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs. This
-license, the GNU Library General Public License, applies to certain
-designated libraries. This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
- The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it. Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program. However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
- Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries. We
-concluded that weaker conditions might promote sharing better.
-
- However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves. This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them. (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.) The hope is that this
-will lead to faster development of free libraries.
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, while the latter only
-works together with the library.
-
- Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
- GNU LIBRARY GENERAL PUBLIC LICENSE
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+ GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- 0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License"). Each licensee is
-addressed as "you".
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
-
+\f
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also compile or
+\f
+ 6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
Library will not necessarily be able to recompile the application
to use the modified definitions.)
- b) Accompany the work with a written offer, valid for at
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
- c) If distribution of the work is made by offering access to copy
+ d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
- d) Verify that the user has already received a copy of these
+ e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
-
+\f
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
+You are not responsible for enforcing compliance by third parties with
this License.
-
+\f
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
+versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
-
+\f
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
DAMAGES.
END OF TERMS AND CONDITIONS
-
+\f
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
+ modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
+ version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307 USA.
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
Install procedure
-----------------
- % gzip -cd at-spi-core-2.0.0.tar.gz | tar xvf - # unpack the sources
- % cd at-spi-core-2.0.0 # change to the toplevel directory
- % ./configure # run the `configure' script
- % make # build at-spi-core
+tar -xJf at-spi2-core-2.34.0.tar.xz # unpack the sources
+ % cd at-spi2-core-2.34.0 # change to the toplevel directory
+mkdir build # create a build directory
+meson .. # configure
+ninja # build at-spi2-core
[ Become root if necessary ]
- % make install # install at-spi-core
+ninja install # install at-spi2-core
Requirements
------------
- GNU make
- GNU autotools
-
- pkg-config
+Packages with local machine architecture:
+meson
+ninja
+pkg-config
+gobject-introspection
+gtk-doc (for generation of documentation)
+Packages with target architecture:
glib
-
dbus
- dbus-glib
-
- X
- XEVIE (Reccomended)
+libX11, libXtst, libXi (for X11 support)
+What's new in at-spi2-core 2.34.0:
+
+* Fix a use after free when freeing an event.
+* Clean up handling of the X11 property specifying the bus address (#18).
+* Update doap.
+
+What's new in at-spi2-core 2.33.92:
+
+* Now requires meson 0.50.0.
+* License is now LGPL-2.1+.
+* Meson: only link to libdl when it is necessary.
+* Update installation instructions.
+* Clarify atspi_editable_text_insert_text documentation.
+* Do not warn on no reply from pending get_items call.
+* Eliminate some superfluous runtime warnings.
+
+What's new in at-spi2-core 2.33.90:
+
+* Refactor the API for the screen reader to notify listeners of its status.
+
+* Add a sender to the AtspiEvent struct.
+
+* Add missing atspi_application_get_type prototype.
+
+* Support mutter remote desktop interface for synthesizing keyboard/mouse
+ events (likely still needs work).
+
+What's new in at-spi2-core 2.33.2:
+
+* Check WAYLAND_DISPLAY, rather than XDG_SESSION_TYPE, to avoid X
+ connections. Fixes breakage if X is started with startx and
+ XDG_SESSION_TYPE is unset.
+
+* X11: also try mod4 and mod5 to generate keysyms.
+
+* Add ATSPI_ROLE_CONTENT_DELETION and ATSPI_ROLE_CONTENT_INSERTION.
+
+* Check for dbus-daemon in /usr/lib (for Solaris).
+
+What's new in at-spi2-core 2.33.1:
+
+* Fix meson build for meson 0.50.0.
+
+* Add atspi_accessible_get_accessible_id.
+
+* Add atspi_text_notify_reading_position.
+
+* Check for an actual X11 session before calling X. This will be needed
+ for Mutter in the future because checking $DISPLAY is not sufficient,
+ and xwyland could be automatically started when it isn't wanted.
+
+What's new in at-spi2-core 2.31.92:
+
+* Fix atspi_table_cell_get_(row_column)_header_cells.
+
+* Update documentation to indicate that extents are only meaningful
+ when an object has both STATE_VISIBLE and STATE_SHOWING.
+
+* Use a consistent style for the meson options.
+
+* Fix a compiler warning on BSD.
+
+
+* Add ScrollSubstringTo and ScrollSubstringToPoint text interfaces.
+
What's new in at-spi2-core 2.31.1:
* Bus launcher: fix an issue where the error wasn't cleared on failure.
xmlns="http://usefulinc.com/ns/doap#">
<name xml:lang="en">at-spi2-core</name>
- <shortdesc xml:lang="en">D-Bus accessibility specifications and registration daemon</shortdesc>
+ <shortdesc xml:lang="en">D-Bus accessibility specifications, library, and registration daemon</shortdesc>
+ <description xml:lang="en">The Access Technology Service Provider Interface
+(AT-SPI) is a set of interfaces that allow access technologies such as screen
+readers to programmatically determine what is being displayed on the screen and
+simulate keyboard and mouse events. It can also be used for automated testing.
+
+The at-spi2-core module contains the D-Bus specification, the registry daemon,
+and a C library for use by access technologies that provides a convenient
+wrapper around the DBus interfaces.</description>
<homepage rdf:resource="http://www.linuxfoundation.org/en/Accessibility/ATK/AT-SPI/AT-SPI_on_D-Bus"/>
+ <license rdf:resource="http://usefulinc.com/doap/licenses/lgpl" />
+ <bug-database rdf:resource="https://gitlab.gnome.org/GNOME/at-spi2-core/issues/" />
+ <download-page rdf:resource="http://download.gnome.org/sources/at-spi2-core/" />
<mailing-list rdf:resource="https://lists.linux-foundation.org/mailman/listinfo/accessibility-atspi"/>
<category rdf:resource="http://api.gnome.org/doap-extensions#core" />
<programming-language>C</programming-language>
<maintainer>
<foaf:Person>
- <foaf:name>Mark Doffman</foaf:name>
- <foaf:mbox rdf:resource="mailto:mark.doffman@codethink.co.uk" />
- <gnome:userid>markdoffman</gnome:userid>
- </foaf:Person>
- </maintainer>
- <maintainer>
- <foaf:Person>
<foaf:name>Mike Gorse</foaf:name>
<foaf:mbox rdf:resource="mailto:mgorse@suse.com" />
<gnome:userid>mgorse</gnome:userid>
</foaf:Person>
</maintainer>
- <maintainer>
- <foaf:Person>
- <foaf:name>Li Yuan</foaf:name>
- <foaf:mbox rdf:resource="mailto:lee.yuan@oracle.com" />
- <gnome:userid>liyuan</gnome:userid>
- </foaf:Person>
- </maintainer>
</Project>
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_ACCESSIBLE_PRIVATE_H_
G_BEGIN_DECLS
#include "atspi-accessible.h"
+#include "atspimarshal.h"
struct _AtspiAccessiblePrivate
{
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
#include "atspi-accessible-private.h"
#include <string.h>
+enum {
+ REGION_CHANGED,
+ LAST_SIGNAL
+};
+
static gboolean enable_caching = FALSE;
static guint quark_locale;
+static guint atspi_accessible_signals[LAST_SIGNAL] = { 0, };
+
+static gboolean
+screen_reader_signal_watcher (GSignalInvocationHint *signal_hint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data)
+{
+ GObject *object;
+ AtspiAccessible *accessible;
+ GSignalQuery signal_query;
+ const char *name;
+ DBusMessage *signal;
+ DBusMessageIter iter, iter_struct, iter_variant, iter_array;
+ dbus_int32_t detail1, detail2;
+ const char *detail = "";
+
+ object = g_value_get_object (param_values + 0);
+ g_return_val_if_fail (ATSPI_IS_ACCESSIBLE(object), FALSE);
+
+ g_signal_query (signal_hint->signal_id, &signal_query);
+ name = signal_query.signal_name;
+ detail1 = g_value_get_int (param_values + 1);
+ detail2 = g_value_get_int (param_values + 2);
+ accessible = ATSPI_ACCESSIBLE (object);
+
+ signal = dbus_message_new_signal (ATSPI_DBUS_PATH_SCREEN_READER,
+ ATSPI_DBUS_INTERFACE_EVENT_SCREEN_READER,
+ "RegionChanged");
+ dbus_message_iter_init_append (signal, &iter);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &detail);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &detail1);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &detail2);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_VARIANT, "(so)",
+ &iter_variant);
+ dbus_message_iter_open_container (&iter_variant, DBUS_TYPE_STRUCT, NULL,
+ &iter_struct);
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_STRING, &accessible->parent.app->bus_name);
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_OBJECT_PATH, &accessible->parent.path);
+ dbus_message_iter_close_container (&iter_variant, &iter_struct);
+ dbus_message_iter_close_container (&iter, &iter_variant);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{sv}",
+ &iter_array);
+ dbus_message_iter_close_container (&iter, &iter_array);
+ dbus_connection_send (_atspi_bus (), signal, NULL);
+ dbus_message_unref (signal);
+ return TRUE;
+}
+
static void
atspi_action_interface_init (AtspiAction *action)
{
#endif
static void
+atspi_accessible_unref (GObject *accessible)
+{
+ if (accessible != NULL)
+ g_object_unref(accessible);
+}
+
+static void
atspi_accessible_init (AtspiAccessible *accessible)
{
#ifdef DEBUG_REF_COUNTS
accessible->priv = atspi_accessible_get_instance_private (accessible);
- accessible->children = g_ptr_array_new_with_free_func (g_object_unref);
+ accessible->children = g_ptr_array_new_with_free_func (atspi_accessible_unref);
}
static void
#endif
G_OBJECT_CLASS (atspi_accessible_parent_class)->finalize (object);
+
+ /* TODO: remove emission hook */
}
static void
object_class->finalize = atspi_accessible_finalize;
quark_locale = g_quark_from_string ("accessible-locale");
+
+ /**
+ * AtspiAccessible::region-changed:
+ * @atspiaccessible: the object which received the signal
+ * @arg1: an integer specifying the current offset of the text being read,
+ * if the object is textual.
+ * @arg2: an integer specifying the ending offset of the text being read,
+ * if the object is textual.
+ *
+ * The signal "region-changed" is emitted by a screen reader to indicate
+ * that it is now reading or tracking a new object, or, a new piece of
+ * text within an object. This allows a magnifier to gain the information
+ * needed to highlight the object that the screen reader is reading.
+ */
+ atspi_accessible_signals[REGION_CHANGED] =
+ g_signal_new ("region_changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (AtspiAccessibleClass, region_changed),
+ NULL, NULL,
+ atspi_marshal_VOID__INT_INT,
+ G_TYPE_NONE,
+ 2, G_TYPE_INT, G_TYPE_INT);
+
+ g_signal_add_emission_hook (atspi_accessible_signals[REGION_CHANGED], 0,
+ screen_reader_signal_watcher, NULL,
+ (GDestroyNotify) NULL);
}
/**
return locale;
}
+/**
+ * atspi_accessible_get_accessible_id:
+ * @obj: an #AtspiAccessible
+ *
+ * Gets the accessible id of the accessible. This is not meant to be presented
+ * to the user, but to be an id which is stable over application development.
+ * Typically, this is the gtkbuilder id.
+ *
+ * Since: 2.34
+ *
+ * Returns: a character string representing the accessible id of the
+ * #AtspiAccessible object or NULL on exception.
+ **/
+gchar*
+atspi_accessible_get_accessible_id (AtspiAccessible *obj, GError **error)
+{
+ gchar *accessible_id;
+
+ g_return_val_if_fail (obj != NULL, NULL);
+
+ if (!_atspi_dbus_get_property (obj, atspi_interface_accessible,
+ "AccessibleId", error, "s", &accessible_id))
+ return NULL;
+
+ return accessible_id;
+}
+
void
free_value (gpointer data)
{
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_ACCESSIBLE_H_
struct _AtspiAccessibleClass
{
AtspiObjectClass parent_class;
+
+ void (*region_changed) (AtspiAccessible *accessible, gint current_offset, gint last_offset);
};
GType atspi_accessible_get_type (void);
guint atspi_accessible_get_process_id (AtspiAccessible *accessible, GError **error);
+gchar * atspi_accessible_get_accessible_id (AtspiAccessible *obj, GError **error);
+
/* private */
void _atspi_accessible_add_cache (AtspiAccessible *accessible, AtspiCache flag);
AtspiCache _atspi_accessible_get_cache_mask (AtspiAccessible *accessible);
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_ACTION_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_APPLICATION_H_
AtspiApplication *
_atspi_application_new (const char *bus_name);
+GType atspi_application_get_type (void);
+
G_END_DECLS
#endif /* _ATSPI_APPLICATION_H_ */
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_COLLECTION_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
/*
* (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).
*
* Gets the bounding box of the specified #AtspiComponent.
+ * The returned values are meaningful only if the Component has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: An #AtspiRect giving the accessible's extents.
**/
* (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).
*
* Gets the minimum x and y coordinates of the specified #AtspiComponent.
+ * The returned values are meaningful only if the Component has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* returns: An #AtspiPoint giving the @obj's position.
**/
* @obj: a pointer to the #AtspiComponent to query.
*
* Gets the size of the specified #AtspiComponent.
+ * The returned values are meaningful only if the Component has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* returns: An #AtspiPoint giving the @obj's size.
**/
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_COMPONENT_H_
* Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
/* TODO: Auto-generate this file again
* @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_CONTENT_DELETION: Content previously deleted or proposed to be
+ * deleted, e.g. in revision history or a content view providing suggestions
+ * from reviewers. @Since: 2.34.
+ * @ATSPI_ROLE_CONTENT_INSERTION: Content previously inserted or proposed to be
+ * inserted, e.g. in revision history or a content view providing suggestions
+ * from reviewers. @Since: 2.34.
* @ATSPI_ROLE_LAST_DEFINED: Not a valid role, used for finding end of
* enumeration.
*
ATSPI_ROLE_DESCRIPTION_TERM,
ATSPI_ROLE_DESCRIPTION_VALUE,
ATSPI_ROLE_FOOTNOTE,
+ ATSPI_ROLE_CONTENT_DELETION,
+ ATSPI_ROLE_CONTENT_INSERTION,
ATSPI_ROLE_LAST_DEFINED,
} AtspiRole;
*
* One higher than the highest valid value of #AtspiRole.
*/
-#define ATSPI_ROLE_COUNT (125+1)
+#define ATSPI_ROLE_COUNT (127+1)
typedef enum
{
#define ATSPI_DBUS_INTERFACE_VALUE "org.a11y.atspi.Value"
#define ATSPI_DBUS_INTERFACE_SOCKET "org.a11y.atspi.Socket"
+#define ATSPI_DBUS_PATH_SCREEN_READER "/org/a11y/atspi/screenreader"
+#define ATSPI_DBUS_INTERFACE_EVENT_SCREEN_READER "org.a11y.atspi.Event.ScreenReader"
+
#ifdef __cplusplus
}
#endif
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_DEVICE_LISTENER_PRIVATE_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_DEVICE_LISTENER_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_DOCUMENT_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
* @position: a #gint indicating the character offset at which to insert
* the new text.
* @text: a string representing the text to insert, in UTF-8 encoding.
- * @length: the number of characters of text to insert. If the character
- * count of text is less than or equal to length, the entire contents
+ * @length: the number of characters of text to insert, in bytes. If the
+ * byte count of text is less than or equal to length, the entire contents
* of text will be inserted.
*
* Inserts text into an #AtspiEditableText object.
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_EDITABLE_TEXT_H_
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_EVENT_LISTENER_PRIVATE_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
#include "atspi-accessible-private.h"
#include <string.h>
+#include <strings.h>
#include <ctype.h>
typedef struct
static gchar *
convert_name_from_dbus (const char *name, gboolean path_hack)
{
- gchar *ret = g_malloc (g_utf8_strlen (name, -1) * 2 + 1);
+ gchar *ret;
const char *p = name;
- gchar *q = ret;
+ gchar *q;
- if (!ret)
- return NULL;
+ if (!name)
+ return g_strdup ("");
+
+ ret = g_malloc (g_utf8_strlen (name, -1) * 2 + 1);
+ q = ret;
while (*p)
{
if (matchrule_array)
{
gchar *matchrule;
+ (*matchrule_array) = g_ptr_array_new ();
matchrule = g_strdup_printf ("type='signal',interface='org.a11y.atspi.Event.%s'", category);
if (name && name [0])
{
- gchar *new_str = g_strconcat (matchrule, ",member='", name, "'", NULL);
- g_free (matchrule);
- matchrule = new_str;
+ gchar *new_str = g_strconcat (matchrule, ",member='", name, "'", NULL);
+ g_free (matchrule);
+ matchrule = new_str;
}
- (*matchrule_array) = g_ptr_array_new ();
if (detail && detail [0])
{
gchar *new_str = g_strconcat (matchrule, ",arg0='", detail, "'", NULL);
* object:model-changed
* object:active-descendant-changed
*
+ * (screen reader events)
+* screen-reader:region-changed
+ *
* (window events)
*
* window:minimize
* In general, listening to
* toolkit-specific events is not recommended.
*
+ * Currently, object:text-reading-position needs to be specified explicitly
+ * (it is not implied by object:text), since it is generated by the screen
+ * reader and is thus a special case internally.
*
* Returns: #TRUE if successful, otherwise #FALSE.
**/
dst->detail2 = src->detail2;
g_value_init (&dst->any_data, G_VALUE_TYPE (&src->any_data));
g_value_copy (&src->any_data, &dst->any_data);
+ dst->sender = g_object_ref (src->sender);
return dst;
}
g_object_unref (event->source);
g_free (event->type);
g_value_unset (&event->any_data);
+ g_object_unref (event->sender);
g_free (event);
}
{
char *detail = NULL;
const char *category = dbus_message_get_interface (message);
+ const char *sender = dbus_message_get_sender (message);
const char *member = dbus_message_get_member (message);
const char *signature = dbus_message_get_signature (message);
gchar *name;
if (strcmp (signature, "siiv(so)") != 0 &&
strcmp (signature, "siiva{sv}") != 0)
{
- g_warning ("Got invalid signature %s for signal %s from interface %s\n", signature, member, category);
+ g_warning ("Got invalid signature %s for signal %s from interface %s\n", signature, member, category);
return DBUS_HANDLER_RESULT_HANDLED;
}
converted_type = p;
}
e.type = converted_type;
- e.source = _atspi_ref_accessible (dbus_message_get_sender(message), dbus_message_get_path(message));
- if (e.source == NULL)
+ if (strcmp (category, "ScreenReader") != 0)
{
- g_warning ("Got no valid source accessible for signal for signal %s from interface %s\n", member, category);
- g_free (converted_type);
- g_free (name);
- g_free (detail);
- return DBUS_HANDLER_RESULT_HANDLED;
+ e.source = _atspi_ref_accessible (sender, dbus_message_get_path (message));
+ if (e.source == NULL)
+ {
+ g_warning ("Got no valid source accessible for signal %s from interface %s\n", member, category);
+ g_free (converted_type);
+ g_free (name);
+ g_free (detail);
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
}
dbus_message_iter_recurse (&iter, &iter_variant);
AtspiRect rect;
if (demarshal_rect (&iter_variant, &rect))
{
- g_value_init (&e.any_data, ATSPI_TYPE_RECT);
- g_value_set_boxed (&e.any_data, &rect);
+ g_value_init (&e.any_data, ATSPI_TYPE_RECT);
+ g_value_set_boxed (&e.any_data, &rect);
}
else
{
AtspiAccessible *accessible;
- accessible = _atspi_dbus_return_accessible_from_iter (&iter_variant);
- g_value_init (&e.any_data, ATSPI_TYPE_ACCESSIBLE);
- g_value_set_instance (&e.any_data, accessible);
- if (accessible)
- g_object_unref (accessible); /* value now owns it */
+ accessible = _atspi_dbus_return_accessible_from_iter (&iter_variant);
+ if (!strcmp (category, "ScreenReader"))
+ {
+ e.source = accessible;
+ }
+ else
+ {
+ g_value_init (&e.any_data, ATSPI_TYPE_ACCESSIBLE);
+ g_value_set_instance (&e.any_data, accessible);
+ if (accessible)
+ g_object_unref (accessible); /* value now owns it */
+ }
}
break;
}
cache = _atspi_dbus_update_cache_from_dict (e.source, &iter);
}
+ e.sender = _atspi_ref_accessible (sender, ATSPI_DBUS_PATH_ROOT);
+
if (!strncmp (e.type, "object:children-changed", 23))
{
cache_process_children_changed (&e);
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_EVENT_LISTENER_H_
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_HYPERLINK_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_HYPERTEXT_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
* @obj: a pointer to the #AtspiImage to query.
*
* Gets the size of the image displayed in a specified #AtspiImage object.
+ * The returned values are meaningful only if the Image has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: a pointer to an #AtspiPoint where x corresponds to
* the image's width and y corresponds to the image's height.
*
* Gets the minimum x and y coordinates of the image displayed in a
* specified #AtspiImage implementor.
+ * The returned values are meaningful only if the Image has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: a pointer to an #AtspiPoint where x and y correspond to the
* minimum coordinates of the displayed image.
*
* Gets the bounding box of the image displayed in a
* specified #AtspiImage implementor.
+ * The returned values are meaningful only if the Image has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: a pointer to an #AtspiRect corresponding to the image's bounding box. The minimum x and y coordinates,
* width, and height are specified.
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_IMAGE_H_
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_MATCH_RULE_PRIVATE_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_MATCH_RULE_H_
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_MISC_PRIVATE_H_
gboolean _atspi_set_allow_sync (gboolean val);
void _atspi_set_error_no_sync (GError **error);
+
+gboolean _atspi_prepare_screen_reader_interface ();
G_END_DECLS
#endif /* _ATSPI_MISC_PRIVATE_H_ */
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
/*
for (i = desktop->children->len - 1; i >= 0; i--)
{
AtspiAccessible *child = g_ptr_array_index (desktop->children, i);
- g_object_run_dispose (G_OBJECT (child->parent.app));
+ if (child->parent.app)
+ g_object_run_dispose (G_OBJECT (child->parent.app));
g_object_run_dispose (G_OBJECT (child));
}
{
const char *sender = dbus_message_get_sender (reply);
const char *error = NULL;
- if (!strcmp (dbus_message_get_error_name (reply),
- DBUS_ERROR_SERVICE_UNKNOWN))
+ const char *error_name = dbus_message_get_error_name (reply);
+ if (!strcmp (error_name, DBUS_ERROR_SERVICE_UNKNOWN)
+ || !strcmp (error_name, DBUS_ERROR_NO_REPLY))
{
}
else
if (address_env != NULL && *address_env != 0)
address = g_strdup (address_env);
#ifdef HAVE_X11
- if (!address)
+ if (!address && g_getenv ("DISPLAY") != NULL &&
+ g_getenv ("WAYLAND_DISPLAY") == NULL)
address = get_accessibility_bus_address_x11 ();
#endif
if (!address)
g_set_error_literal (error, ATSPI_ERROR, ATSPI_ERROR_SYNC_NOT_ALLOWED,
_("Attempted synchronous call where prohibited"));
}
+
+static const char *sr_introspection = "<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
+"\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
+"<node name=\"/org/a11y/atspi/screenreader\">\n"
+" <interface name=\"org.a11y.Atspi.ScreenReader\">\n"
+" <signal name=\"ReadingPosition\">\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" </signal>\n"
+" </interface>\n"
+"</node>";
+
+static DBusHandlerResult
+screen_reader_filter (DBusConnection *bus, DBusMessage *message, void *user_data)
+{
+ if (dbus_message_is_method_call (message, DBUS_INTERFACE_INTROSPECTABLE,
+ "Introspect"))
+ {
+ DBusMessage *reply = dbus_message_new_method_return (message);
+ dbus_message_append_args (reply, DBUS_TYPE_STRING, &sr_introspection,
+ DBUS_TYPE_INVALID);
+ dbus_connection_send (bus, reply, NULL);
+ dbus_message_unref (reply);
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+gboolean
+_atspi_prepare_screen_reader_interface ()
+{
+ static gint initialized = 0;
+ DBusConnection *a11y_bus = _atspi_bus ();
+
+ if (initialized)
+ return (initialized > 0);
+
+ if (dbus_bus_request_name (a11y_bus, "org.a11y.Atspi.ScreenReader", 0, NULL) < 0)
+ {
+ initialized = -1;
+ return FALSE;
+ }
+
+ initialized = 1;
+ dbus_connection_add_filter (a11y_bus, screen_reader_filter, NULL, NULL);
+ return TRUE;
+}
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_MISC_H_
--- /dev/null
+/*
+ * AT-SPI - Assistive Technology Service Provider Interface
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 2019 SUSE LLC.
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _ATSPI_MUTTER_H_
+#define _ATSPI_MUTTER_H_
+
+G_BEGIN_DECLS
+
+gboolean _atspi_mutter_generate_keyboard_event (glong keyval, const gchar *keystring, AtspiKeySynthType synth_type, GError **error);
+
+gboolean _atspi_mutter_generate_mouse_event (glong x, glong y, const gchar *name, GError **error);
+
+void _atspi_mutter_set_reference_window (AtspiAccessible *accessible);
+G_END_DECLS
+
+#endif /* _ATSPI_MUTTER_H_ */
--- /dev/null
+/*
+ * AT-SPI - Assistive Technology Service Provider Interface
+ * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
+ *
+ * Copyright 2019 SUSE LLC.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/* atspi-mutter.c: support for keyboard/mouse handling using the
+ * mutter/gnome-shell remote desktop interfaces
+ *
+ * This functionality is analogous to the X11-based code in
+ * device-event-controller-x11.c. Placing the code here, rather than in the
+ * registry daemon, allows the relevant dbus calls to come directly from the
+ * AT-SPI client, rather than at-spi2-registryd being an intermediary,
+ * which may be useful if a distribution wishes to lock down access to the
+ * remote desktop interfaces.
+ */
+
+#include "atspi-private.h"
+
+typedef struct
+{
+ DBusConnection *bus;
+ const char *rd_session_id;
+ const char *rd_session_path;
+ const char *sc_session_id;
+ const char *sc_session_path;
+ const char *sc_stream_path;
+ dbus_uint64_t window_id;
+ gboolean window_id_is_explicit;
+} ATSPI_MUTTER_DATA;
+
+static ATSPI_MUTTER_DATA data;
+
+#define MUTTER_REMOTE_DESKTOP_BUS_NAME "org.gnome.Mutter.RemoteDesktop"
+#define MUTTER_REMOTE_DESKTOP_OBJECT_PATH "/org/gnome/Mutter/RemoteDesktop"
+#define MUTTER_REMOTE_DESKTOP_INTERFACE "org.gnome.Mutter.RemoteDesktop"
+#define MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE "org.gnome.Mutter.RemoteDesktop.Session"
+#define MUTTER_SCREEN_CAST_BUS_NAME "org.gnome.Mutter.ScreenCast"
+#define MUTTER_SCREEN_CAST_OBJECT_PATH "/org/gnome/Mutter/ScreenCast"
+#define MUTTER_SCREEN_CAST_INTERFACE "org.gnome.Mutter.ScreenCast"
+#define MUTTER_SCREEN_CAST_SESSION_INTERFACE "org.gnome.Mutter.ScreenCast.Session"
+
+/* TODO: consider porting this to gdbus */
+
+static void
+ensure_bus ()
+{
+ if (data.bus)
+ return;
+ data.bus = dbus_bus_get (DBUS_BUS_SESSION, NULL);
+}
+
+static gboolean
+ensure_rd_session_path (GError **error)
+{
+ char *session_path;
+ DBusError d_error;
+
+ if (data.rd_session_path)
+ return (data.rd_session_path[0] != '\0');
+ ensure_bus ();
+
+ dbus_error_init (&d_error);
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, MUTTER_REMOTE_DESKTOP_OBJECT_PATH, MUTTER_REMOTE_DESKTOP_INTERFACE, "CreateSession", &d_error, "=>o", &session_path);
+
+ data.rd_session_path = g_strdup (session_path);
+ if (!data.rd_session_path[0])
+ return FALSE;
+
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "Start", &d_error, "");
+ return TRUE;
+}
+
+static dbus_uint64_t
+get_window_id (const char *name)
+{
+ DBusMessage *message, *reply;
+ DBusError d_error;
+ dbus_uint64_t window_id;
+ DBusMessageIter iter, iter_array, iter_dict, iter_sub_array, iter_sub_dict;
+ const char *prop_name;
+ const char *cur_name;
+ dbus_bool_t cur_focus;
+ gboolean have_focus;
+
+ dbus_error_init (&d_error);
+ message = dbus_message_new_method_call (MUTTER_REMOTE_DESKTOP_BUS_NAME, "/org/gnome/Shell/Introspect", "org.gnome.Shell.Introspect", "GetWindows");
+ reply = dbus_connection_send_with_reply_and_block (data.bus, message, -1, &d_error);
+ dbus_message_unref (message);
+
+ if (!reply)
+ return FALSE;
+ if (strcmp (dbus_message_get_signature (reply), "a{ta{sv}}") != 0)
+ {
+ dbus_message_unref (reply);
+ return FALSE;
+ }
+
+ dbus_message_iter_init (reply, &iter);
+ dbus_message_iter_recurse (&iter, &iter_array);
+ while (dbus_message_iter_get_arg_type (&iter_array) != DBUS_TYPE_INVALID)
+ {
+ dbus_message_iter_recurse (&iter_array, &iter_dict);
+ dbus_message_iter_get_basic (&iter_dict, &window_id);
+ dbus_message_iter_next (&iter_dict);
+ dbus_message_iter_recurse (&iter_dict, &iter_sub_array);
+ cur_name = NULL;
+ have_focus = FALSE;
+ while (dbus_message_iter_get_arg_type (&iter_sub_array) != DBUS_TYPE_INVALID)
+ {
+ dbus_message_iter_recurse (&iter_sub_array, &iter_sub_dict);
+ dbus_message_iter_get_basic (&iter_sub_dict, &prop_name);
+ if (!strcmp (prop_name, "wm-class"))
+ {
+ DBusMessageIter iter_variant;
+ dbus_message_iter_next (&iter_sub_dict);
+ dbus_message_iter_recurse (&iter_sub_dict, &iter_variant);
+ dbus_message_iter_get_basic (&iter_variant, &cur_name);
+ }
+ if (!strcmp (prop_name, "has-focus"))
+ {
+ DBusMessageIter iter_variant;
+ dbus_message_iter_next (&iter_sub_dict);
+ dbus_message_iter_recurse (&iter_sub_dict, &iter_variant);
+ dbus_message_iter_get_basic (&iter_variant, &cur_focus);
+ have_focus = TRUE;
+ }
+ if (cur_name && have_focus)
+ {
+ if ((name && !strcmp (name, cur_name)) || cur_focus)
+ {
+ dbus_message_unref (reply);
+ return window_id;
+ }
+ break;
+ }
+ dbus_message_iter_next (&iter_sub_array);
+ }
+ dbus_message_iter_next (&iter_array);
+ }
+
+ dbus_message_unref (reply);
+ return 0;
+}
+
+static gboolean
+ensure_rd_session_id (GError **error)
+{
+ DBusMessage *message, *reply;
+ DBusError d_error;
+ const char *interface = "org.gnome.Mutter.RemoteDesktop.Session";
+ const char *prop_name = "SessionId";
+ DBusMessageIter iter, iter_variant;
+ const char *session_id;
+
+ if (data.rd_session_id)
+ return (data.rd_session_id[0] != '\0');
+
+ if (!ensure_rd_session_path (error))
+ return FALSE;
+
+ message = dbus_message_new_method_call (MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, "org.freedesktop.DBus.Properties", "Get");
+ dbus_message_append_args (message, DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &prop_name, DBUS_TYPE_INVALID);
+
+ dbus_error_init (&d_error);
+ reply = dbus_connection_send_with_reply_and_block (data.bus, message, -1, &d_error);
+ dbus_message_unref (message);
+ if (!reply)
+ return FALSE;
+ if (strcmp (dbus_message_get_signature (reply), "v") != 0)
+ {
+ dbus_message_unref (reply);
+ return FALSE;
+ }
+ dbus_message_iter_init (reply, &iter);
+ dbus_message_iter_recurse (&iter, &iter_variant);
+ dbus_message_iter_get_basic (&iter_variant, &session_id);
+ data.rd_session_id = g_strdup (session_id);
+ dbus_message_unref (reply);
+ return TRUE;
+}
+
+static gboolean
+ensure_sc_session (GError **error)
+{
+ DBusMessage *message, *reply;
+ DBusError d_error;
+ DBusMessageIter iter, iter_array, iter_dict_entry, iter_variant;
+ const char *prop_name = "remote-desktop-session-id";
+ const char *sc_session_path;
+
+ if (!ensure_rd_session_id (error))
+ return FALSE;
+
+ if (data.sc_session_path)
+ return (data.sc_session_path[0] != '\0');
+
+ message = dbus_message_new_method_call (MUTTER_SCREEN_CAST_BUS_NAME, MUTTER_SCREEN_CAST_OBJECT_PATH, MUTTER_SCREEN_CAST_INTERFACE, "CreateSession");
+ dbus_message_iter_init_append (message, &iter);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{sv}", &iter_array);
+ dbus_message_iter_open_container (&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict_entry);
+ dbus_message_iter_append_basic (&iter_dict_entry, DBUS_TYPE_STRING, &prop_name);
+ dbus_message_iter_open_container (&iter_dict_entry, DBUS_TYPE_VARIANT, "s", &iter_variant);
+ dbus_message_iter_append_basic (&iter_variant, DBUS_TYPE_STRING, &data.rd_session_id);
+ dbus_message_iter_close_container (&iter_dict_entry, &iter_variant);
+ dbus_message_iter_close_container (&iter_array, &iter_dict_entry);
+ dbus_message_iter_close_container (&iter, &iter_array);
+ dbus_error_init (&d_error);
+ reply = dbus_connection_send_with_reply_and_block (data.bus, message, -1, &d_error);
+ dbus_message_unref (message);
+ if (!reply)
+ return FALSE;
+ if (!dbus_message_get_args (reply, NULL, DBUS_TYPE_OBJECT_PATH, &sc_session_path, DBUS_TYPE_INVALID))
+ {
+ dbus_message_unref (reply);
+ return FALSE;
+ }
+
+ data.sc_session_path = g_strdup (sc_session_path);
+ dbus_message_unref (reply);
+ return TRUE;
+}
+
+static gboolean
+init_mutter (gboolean need_window, GError **error)
+{
+ dbus_uint64_t window_id;
+ const char *prop_name = "window-id";
+ DBusError d_error;
+ DBusMessageIter iter, iter_array, iter_dict_entry, iter_variant;
+ DBusMessage *message, *reply;
+ const char *sc_stream_path;
+
+ if (!ensure_rd_session_path (error))
+ return FALSE;
+
+ if (!need_window)
+ return TRUE;
+
+ window_id = (data.window_id_is_explicit) ? data.window_id
+ : get_window_id (NULL);
+ if (!window_id)
+ return FALSE;
+
+ if (!ensure_sc_session (error))
+ return FALSE;
+
+ if (window_id == data.window_id)
+ return TRUE;
+
+ message = dbus_message_new_method_call (MUTTER_SCREEN_CAST_BUS_NAME, data.sc_session_path, MUTTER_SCREEN_CAST_SESSION_INTERFACE, "RecordWindow");
+ dbus_message_iter_init_append (message, &iter);
+ dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{sv}", &iter_array);
+ dbus_message_iter_open_container (&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict_entry);
+ dbus_message_iter_append_basic (&iter_dict_entry, DBUS_TYPE_STRING, &prop_name);
+ dbus_message_iter_open_container (&iter_dict_entry, DBUS_TYPE_VARIANT, "t", &iter_variant);
+ dbus_message_iter_append_basic (&iter_variant, DBUS_TYPE_UINT64, &window_id);
+ dbus_message_iter_close_container (&iter_dict_entry, &iter_variant);
+ dbus_message_iter_close_container (&iter_array, &iter_dict_entry);
+ dbus_message_iter_close_container (&iter, &iter_array);
+ dbus_error_init (&d_error);
+ reply = dbus_connection_send_with_reply_and_block (data.bus, message, -1, &d_error);
+ dbus_message_unref (message);
+ if (!reply)
+ return FALSE;
+ if (!dbus_message_get_args (reply, NULL, DBUS_TYPE_OBJECT_PATH, &sc_stream_path, DBUS_TYPE_INVALID))
+ {
+ dbus_message_unref (reply);
+ return FALSE;
+ }
+
+ data.sc_stream_path = g_strdup (sc_stream_path);
+ dbus_message_unref (reply);
+ data.window_id = window_id;
+ return TRUE;
+}
+
+gboolean
+_atspi_mutter_generate_keyboard_event (glong keyval,
+ const gchar *keystring,
+ AtspiKeySynthType synth_type, GError **error)
+{
+ DBusError d_error;
+ dbus_uint32_t d_keyval = keyval;
+
+ if (!init_mutter (FALSE, error))
+ return FALSE;
+
+ dbus_error_init (&d_error);
+ switch (synth_type)
+ {
+ case ATSPI_KEY_PRESS:
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyKeyboardKeycode", &d_error, "ub", d_keyval, TRUE);
+ break;
+ case ATSPI_KEY_RELEASE:
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyKeyboardKeycode", &d_error, "ub", d_keyval, FALSE);
+ break;
+ case ATSPI_KEY_PRESSRELEASE:
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyKeyboardKeycode", &d_error, "ub", d_keyval, TRUE);
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyKeyboardKeycode", &d_error, "ub", d_keyval, FALSE);
+ break;
+ case ATSPI_KEY_SYM:
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyKeyboardKeysyme", &d_error, "ub", d_keyval, TRUE);
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyKeyboardKeysyme", &d_error, "ub", d_keyval, FALSE);
+ break;
+ default:
+ /* TODO: set error */
+ g_warning ("%s: unsupported type", __func__);
+ return FALSE;
+ }
+ if (dbus_error_is_set (&d_error))
+ {
+ g_warning ("GenerateKeyboardEvent failed: %s", d_error.message);
+ dbus_error_free (&d_error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+_atspi_mutter_generate_mouse_event (glong x, glong y, const gchar *name, GError **error)
+{
+ gint button = 0;
+ double d_x = x, d_y = y;
+ DBusError d_error;
+
+ if (!init_mutter (TRUE, error))
+ return FALSE;
+
+ dbus_error_init (&d_error);
+ switch (name[0])
+ {
+ case 'b':
+ button = name[1] - '1';
+ if (button < 0 || button > 4)
+ return FALSE;
+ if (x != -1 && y != -1)
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerMotionAbsolute", &d_error, "sdd", data.sc_stream_path, d_x, d_y);
+ switch (name[2])
+ {
+ case 'p':
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerButton", &d_error, "ib", button, TRUE);
+ break;
+ case 'r':
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerButton", &d_error, "ib", button, FALSE);
+ break;
+ case 'c':
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerButton", &d_error, "ib", button, TRUE);
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerButton", &d_error, "ib", button, FALSE);
+ break;
+ case 'd':
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerButton", &d_error, "ib", button, TRUE);
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerButton", &d_error, "ib", button, FALSE);
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerButton", &d_error, "ib", button, TRUE);
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerButton", &d_error, "ib", button, FALSE);
+ break;
+ default:
+ return FALSE;
+ }
+ break;
+ case 'a': /* absolute motion */
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerMotionAbsolute", &d_error, "sdd", data.sc_stream_path, d_x, d_y);
+ break;
+ case 'r': /* relative */
+ dbind_method_call_reentrant (data.bus, MUTTER_REMOTE_DESKTOP_BUS_NAME, data.rd_session_path, MUTTER_REMOTE_DESKTOP_SESSION_INTERFACE, "NotifyPointerMotionRelative", &d_error, "dd", d_x, d_y);
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void
+_atspi_mutter_set_reference_window (AtspiAccessible *accessible)
+{
+ if (accessible)
+ {
+ AtspiRole role = atspi_accessible_get_role (accessible, NULL);
+ gchar *name;
+ g_return_if_fail (role != ATSPI_ROLE_APPLICATION);
+ name = atspi_accessible_get_name (accessible, NULL);
+ data.window_id = get_window_id (name);
+ data.window_id_is_explicit = TRUE;
+ }
+
+ else
+ {
+ data.window_id_is_explicit = FALSE;
+ }
+}
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_OBJECT_H_
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_PRIVATE_H_
#include "atspi-event-listener-private.h"
#include "atspi-matchrule-private.h"
#include "atspi-misc-private.h"
+#include "atspi-mutter-private.h"
#include "glib/gi18n.h"
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
/* atspi_registry.c: Global functions wrapping the registry */
return TRUE;
}
+static gboolean
+using_mutter ()
+{
+ return (g_getenv ("WAYLAND_DISPLAY") != NULL);
+}
+
/**
* atspi_generate_keyboard_event:
* @keyval: a #gint indicating the keycode or keysym or modifier mask of the
dbus_int32_t d_keyval = keyval;
DBusError d_error;
+ if (using_mutter ())
+ {
+ if (_atspi_mutter_generate_keyboard_event (keyval, keystring, synth_type, error))
+ return TRUE;
+ }
+
dbus_error_init (&d_error);
if (!keystring)
keystring = "";
dbus_int32_t d_x = x, d_y = y;
DBusError d_error;
+ g_return_val_if_fail (name != NULL, FALSE);
+
+ if (using_mutter ())
+ {
+ if (_atspi_mutter_generate_mouse_event (x, y, name, error))
+ return TRUE;
+ }
+
dbus_error_init (&d_error);
dbind_method_call_reentrant (_atspi_bus(), atspi_bus_registry,
atspi_path_dec, atspi_interface_dec,
return TRUE;
}
+/**
+ * atspi_set_reference_window:
+ *
+ * @accessible: the #AtspiAccessible corresponding to the window to select.
+ * should be a top-level window with a role of
+ * ATSPI_ROLE_APPLICATION.
+ *
+ * Sets the reference window that will be used when atspi_generate_mouse_event
+ * is called. Coordinates will be assumed to be relative to this window. This
+ * is needed because, due to Wayland's security model, it is not currently
+ * possible to retrieve global coordinates.
+ * If NULL is passed, then AT-SPI will use the window that has focus at the
+ * time that atspi_generate_mouse_event is called.
+ */
+void
+atspi_set_reference_window (AtspiAccessible *accessible)
+{
+ if (using_mutter ())
+ _atspi_mutter_set_reference_window (accessible);
+}
+
AtspiKeyDefinition *
atspi_key_definition_copy (AtspiKeyDefinition *src)
{
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_REGISTRY_H_
gboolean
atspi_generate_mouse_event (glong x, glong y, const gchar *name, GError **error);
+void
+atspi_set_reference_window (AtspiAccessible *accessible);
G_END_DECLS
#endif /* _ATSPI_REGISTRY_H_ */
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_RELATION_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_SELECTION_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_STATE_SET_H_
* Copyright 2013 SUSE LLC.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <stdlib.h> /* for malloc */
if (!reply)
return NULL;
- if (strcmp (dbus_message_get_signature (reply), "(so)") != 0)
+ if (strcmp (dbus_message_get_signature (reply), "a(so)") != 0)
{
dbus_message_unref (reply);
return NULL;
* @obj: a GObject instance that implements AtspiTableCellIface
*
* Returns the number of columns occupied by this cell accessible.
+ * The returned values are meaningful only if the table cell has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: a gint representing the number of columns occupied by this cell,
* or 0 if the cell does not implement this method.
* @obj: a GObject instance that implements AtspiTableCellIface
*
* Returns the number of rows occupied by this cell accessible.
+ * The returned values are meaningful only if the table cell has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: a gint representing the number of rows occupied by this cell,
* or 0 if the cell does not implement this method.
* @column_span: (out): the number of columns occupied by this cell.
*
* Gets the row and column indexes and extents of this cell accessible.
+ * The returned values are meaningful only if the table cell has both
+ * STATE_VISIBLE and STATE_SHOWING.
*/
void
atspi_table_cell_get_row_column_span (AtspiTableCell *obj,
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_TABLE_CELL_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <stdlib.h> /* for malloc */
* Gets the number of rows spanned by the table cell at the specific row
* and column. (some tables can have cells which span multiple rows
* and/or columns).
+ * The returned values are meaningful only if the Table has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: a #gint indicating the number of rows spanned by the specified cell.
**/
* Gets the number of columns spanned by the table cell at the specific
* row and column (some tables can have cells which span multiple
* rows and/or columns).
+ * The returned values are meaningful only if the Table has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: a #gint indicating the number of columns spanned by the specified cell.
**/
* extents, and whether the cell is currently selected. If
* the child at index is not a cell (for instance, if it is
* a summary, caption, etc.), #FALSE is returned.
+ * The returned values are meaningful only if the Table has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Example:
* If the #AtspiTable child at index '6' extends across columns 5 and 6 of
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_TABLE_H_
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
* Gets a bounding box containing the glyph representing
* the character at a particular text offset.
+ * The returned values are meaningful only if the Text has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: An #AtspiRect specifying the position and size of the character.
*
* for the returned values.
*
* Gets the bounding box for text within a range in an #AtspiText object.
+ * The returned values are meaningful only if the Text has both
+ * STATE_VISIBLE and STATE_SHOWING.
*
* Returns: An #AtspiRect giving the position and size of the specified range
* of text.
return retval;
}
+/**
+ * atspi_text_scroll_substring_to:
+ * @obj: a pointer to the #AtspiText object on which to operate.
+ * @start_offset: a #gint indicating the start of the desired text range.
+ * @end_offset: a #gint indicating the first character past the desired range.
+ * @type: a #AtspiScrollType indicating where the object should be placed on the
+ * screen.
+ *
+ * Scrolls whatever container of the #AtspiText text range so it becomes
+ * visible on the screen.
+ *
+ * Returns: #TRUE if successful, #FALSE otherwise.
+ **/
+gboolean
+atspi_text_scroll_substring_to (AtspiText *obj,
+ gint start_offset,
+ gint end_offset,
+ AtspiScrollType type,
+ GError **error)
+{
+ dbus_bool_t retval = FALSE;
+
+ g_return_val_if_fail (obj != NULL, FALSE);
+
+ _atspi_dbus_call (obj, atspi_interface_text, "ScrollSubstringTo",
+ error, "iiu=>b",
+ start_offset, end_offset, type, &retval);
+
+ return retval;
+}
+
+/**
+ * atspi_text_scroll_substring_to_point:
+ * @obj: a pointer to the #AtspiText object on which to operate.
+ * @start_offset: a #gint indicating the start of the desired text range.
+ * @end_offset: a #gint indicating the first character past the desired range.
+ * @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
+ *
+ * Scrolls whatever container of the #AtspiText text range so it becomes
+ * visible on the screen at a given position.
+ *
+ * Returns: #TRUE if successful, #FALSE otherwise.
+ **/
+gboolean
+atspi_text_scroll_substring_to_point (AtspiText *obj,
+ gint start_offset,
+ gint end_offset,
+ 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_text, "ScrollSubstringToPoint",
+ error, "iiuii=>b",
+ start_offset, end_offset, coords, x, y, &retval);
+
+ return retval;
+}
+
static void
atspi_text_base_init (AtspiText *klass)
{
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_TEXT_H_
gboolean atspi_text_set_selection (AtspiText *obj, gint selection_num, gint start_offset, gint end_offset, GError **error);
+gboolean atspi_text_scroll_substring_to (AtspiText *obj, gint start_offset, gint end_offset, AtspiScrollType type, GError **error);
+
+gboolean atspi_text_scroll_substring_to_point (AtspiText *obj, gint start_offset, gint end_offset, AtspiCoordType coords, gint x, gint y, GError **error);
G_END_DECLS
#endif /* _ATSPI_TEXT_H_ */
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_TYPES_H_
gint detail1;
gint detail2;
GValue any_data;
+ AtspiAccessible *sender;
};
/**
* Copyright 2010, 2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "atspi-private.h"
*
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_VALUE_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _ATSPI_H
--- /dev/null
+# see glib-genmarshal(1) for a detailed description of the file format,
+# possible parameter types are:
+# VOID indicates no return type, or no extra
+# parameters. if VOID is used as the parameter
+# list, no additional parameters may be present.
+# BOOLEAN for boolean types (gboolean)
+# CHAR for signed char types (gchar)
+# UCHAR for unsigned char types (guchar)
+# INT for signed integer types (gint)
+# UINT for unsigned integer types (guint)
+# LONG for signed long integer types (glong)
+# ULONG for unsigned long integer types (gulong)
+# ENUM for enumeration types (gint)
+# FLAGS for flag enumeration types (guint)
+# FLOAT for single-precision float types (gfloat)
+# DOUBLE for double-precision float types (gdouble)
+# STRING for string types (gchar*)
+# PARAM for GParamSpec or derived types (GParamSpec*)
+# BOXED for boxed (anonymous but reference counted) types (GBoxed*)
+# POINTER for anonymous pointer types (gpointer)
+# OBJECT for GObject or derived types (GObject*)
+# NONE deprecated alias for VOID
+# BOOL deprecated alias for BOOLEAN
+
+VOID:INT,INT
'atspi-hypertext.c',
'atspi-image.c',
'atspi-matchrule.c',
+ 'atspi-mutter.c',
'atspi-misc.c',
'atspi-object.c',
'atspi-registry.c',
atspi_includedir = join_paths(get_option('prefix'), get_option('includedir'), 'at-spi-2.0', 'atspi')
-install_headers(atspi_headers, subdir: atspi_includedir)
+install_headers(atspi_headers, install_dir: atspi_includedir)
+
+# Marshallers
+atspi_marshals = gnome.genmarshal('atspimarshal',
+ sources: 'atspimarshal.list',
+ prefix: 'atspi_marshal',
+)
+atspi_marshal_h = atspi_marshals[1]
atspi_enums = gnome.mkenums('atspi-enum-types',
sources: [ 'atspi-constants.h', 'atspi-types.h' ],
install_header: true)
atspi_enum_h = atspi_enums[1]
-atspi = library('atspi', atspi_sources + atspi_enums,
+atspi = library('atspi', atspi_sources + atspi_enums + atspi_marshals,
version: soversion,
soversion: soversion.split('.')[0],
include_directories: [ root_inc, registryd_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
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "config.h"
/* -1 == error, 0 == pending, > 0 == running */
int a11y_bus_pid;
char *a11y_bus_address;
+#ifdef HAVE_X11
+ gboolean x11_prop_set;
+#endif
int pipefd[2];
int listenfd;
char *a11y_launch_error_message;
{
app->a11y_launch_error_message = g_strdup_printf ("Failed to read address: %s", strerror (errno));
kill (app->a11y_bus_pid, SIGTERM);
+ app->a11y_bus_pid = -1;
goto error;
}
close (app->pipefd[0]);
#endif
#ifdef HAVE_X11
- {
- Display *display = XOpenDisplay (NULL);
- if (display)
- {
- Atom bus_address_atom = XInternAtom (display, "AT_SPI_BUS", False);
- XChangeProperty (display,
- XDefaultRootWindow (display),
- bus_address_atom,
- XA_STRING, 8, PropModeReplace,
- (guchar *) app->a11y_bus_address, strlen (app->a11y_bus_address));
- XFlush (display);
- XCloseDisplay (display);
- }
- }
+ if (g_getenv ("DISPLAY") != NULL && g_getenv ("WAYLAND_DISPLAY") == NULL)
+ {
+ Display *display = XOpenDisplay (NULL);
+ if (display)
+ {
+ Atom bus_address_atom = XInternAtom (display, "AT_SPI_BUS", False);
+ XChangeProperty (display,
+ XDefaultRootWindow (display),
+ bus_address_atom,
+ XA_STRING, 8, PropModeReplace,
+ (guchar *) app->a11y_bus_address, strlen (app->a11y_bus_address));
+ XFlush (display);
+ XCloseDisplay (display);
+ app->x11_prop_set = TRUE;
+ }
+ }
#endif
return TRUE;
}
app->session_bus = connection;
- if (app->launch_immediately)
- {
- ensure_a11y_bus (app);
- if (app->state == A11Y_BUS_STATE_ERROR)
- {
- g_main_loop_quit (app->loop);
- return;
- }
- }
-
error = NULL;
registration_id = g_dbus_connection_register_object (connection,
"/org/a11y/bus",
const gchar *name,
gpointer user_data)
{
+ A11yBusLauncher *app = user_data;
+
+ if (app->launch_immediately)
+ {
+ ensure_a11y_bus (app);
+ if (app->state == A11Y_BUS_STATE_ERROR)
+ {
+ g_main_loop_quit (app->loop);
+ return;
+ }
+ }
+
g_bus_watch_name (G_BUS_TYPE_SESSION,
"org.gnome.SessionManager",
G_BUS_NAME_WATCHER_FLAGS_NONE,
app);
}
-static gboolean
-already_running ()
-{
-#ifdef HAVE_X11
- Atom AT_SPI_BUS;
- Atom actual_type;
- Display *bridge_display;
- int actual_format;
- unsigned char *data = NULL;
- unsigned long nitems;
- unsigned long leftover;
- gboolean result = FALSE;
-
- bridge_display = XOpenDisplay (NULL);
- if (!bridge_display)
- return FALSE;
-
- AT_SPI_BUS = XInternAtom (bridge_display, "AT_SPI_BUS", False);
- XGetWindowProperty (bridge_display,
- XDefaultRootWindow (bridge_display),
- AT_SPI_BUS, 0L,
- (long) BUFSIZ, False,
- (Atom) 31, &actual_type, &actual_format,
- &nitems, &leftover, &data);
-
- if (data)
- {
- GDBusConnection *bus;
- bus = g_dbus_connection_new_for_address_sync ((const gchar *)data, 0,
- NULL, NULL, NULL);
- if (bus != NULL)
- {
- result = TRUE;
- g_object_unref (bus);
- }
- }
-
- XCloseDisplay (bridge_display);
- return result;
-#else
- return FALSE;
-#endif
-}
-
static GSettings *
get_schema (const gchar *name)
{
gboolean screen_reader_set = FALSE;
gint i;
- if (already_running ())
- return 0;
-
_global_app = g_slice_new0 (A11yBusLauncher);
_global_app->loop = g_main_loop_new (NULL, FALSE);
* we don't want early login processes to pick up the stale address.
*/
#ifdef HAVE_X11
- {
- Display *display = XOpenDisplay (NULL);
- if (display)
- {
- Atom bus_address_atom = XInternAtom (display, "AT_SPI_BUS", False);
- XDeleteProperty (display,
- XDefaultRootWindow (display),
- bus_address_atom);
+ if (_global_app->x11_prop_set)
+ {
+ Display *display = XOpenDisplay (NULL);
+ if (display)
+ {
+ Atom bus_address_atom = XInternAtom (display, "AT_SPI_BUS", False);
+ XDeleteProperty (display,
+ XDefaultRootWindow (display),
+ bus_address_atom);
- XFlush (display);
- XCloseDisplay (display);
- }
- }
+ XFlush (display);
+ XCloseDisplay (display);
+ }
+ }
#endif
if (_global_app->a11y_launch_error_message)
'/usr/sbin/dbus-daemon',
'/libexec/dbus-daemon',
'/usr/libexec/dbus-daemon',
+ '/usr/lib/dbus-daemon',
'/usr/pkg/bin/dbus-daemon',
required: false)
if dbus_daemon.found()
* Copyright 2008-2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
/* type driven marshalling */
* Copyright 2008-2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _DBIND_ANY_H_
* Copyright 2008-2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <stdio.h>
* Copyright 2008-2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef _DBIND_H_
* Copyright 2008-2011 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <stdio.h>
atspi_text_get_string_at_offset
atspi_text_get_text_attribute_value
atspi_text_get_text_attributes
+atspi_text_scroll_substring_to
+atspi_text_scroll_substring_to_point
<SUBSECTION Standard>
ATSPI_TEXT
ATSPI_IS_TEXT
atspi_accessible_get_text_iface
atspi_accessible_get_value_iface
atspi_accessible_get_interfaces
+atspi_accessible_get_accessible_id
<SUBSECTION Standard>
ATSPI_ACCESSIBLE
ATSPI_IS_ACCESSIBLE
atspi_deregister_device_event_listener
atspi_generate_keyboard_event
atspi_generate_mouse_event
+atspi_set_reference_window
</SECTION>
<SECTION>
@Returns:
+<!-- ##### FUNCTION atspi_accessible_get_accessible_id ##### -->
+<para>
+
+</para>
+
+@obj:
+@error:
+@Returns:
+
+
+++ /dev/null
-
-/*
- The base interface which is implemented by all accessible objects.
- */
-
-interface org.freestandards.atspi.Accessible {
-
- enum <uint32> Role {
- ROLE_INVALID = 0,
- ROLE_ACCELERATOR_LABEL,
- ROLE_ALERT,
- ROLE_ANIMATION,
- ROLE_ARROW,
- ROLE_CALENDAR,
- ROLE_CANVAS,
- ROLE_CHECK_BOX,
- ROLE_CHECK_MENU_ITEM,
- ROLE_COLOR_CHOOSER,
- ROLE_COLUMN_HEADER,
- ROLE_COMBO_BOX,
- ROLE_DATE_EDITOR,
- ROLE_DESKTOP_ICON,
- ROLE_DESKTOP_FRAME,
- ROLE_DIAL,
- ROLE_DIALOG,
- ROLE_DIRECTORY_PANE,
- ROLE_DRAWING_AREA,
- ROLE_FILE_CHOOSER,
- ROLE_FILLER,
- ROLE_FOCUS_TRAVERSABLE,
- ROLE_FONT_CHOOSER,
- ROLE_FRAME,
- ROLE_GLASS_PANE,
- ROLE_HTML_CONTAINER,
- ROLE_ICON,
- ROLE_IMAGE,
- ROLE_INTERNAL_FRAME,
- ROLE_LABEL,
- ROLE_LAYERED_PANE,
- ROLE_LIST,
- ROLE_LIST_ITEM,
- ROLE_MENU,
- ROLE_MENU_BAR,
- ROLE_MENU_ITEM,
- ROLE_OPTION_PANE,
- ROLE_PAGE_TAB,
- ROLE_PAGE_TAB_LIST,
- ROLE_PANEL,
- ROLE_PASSWORD_TEXT,
- ROLE_POPUP_MENU,
- ROLE_PROGRESS_BAR,
- ROLE_PUSH_BUTTON,
- ROLE_RADIO_BUTTON,
- ROLE_RADIO_MENU_ITEM,
- ROLE_ROOT_PANE,
- ROLE_ROW_HEADER,
- ROLE_SCROLL_BAR,
- ROLE_SCROLL_PANE,
- ROLE_SEPARATOR,
- ROLE_SLIDER,
- ROLE_SPIN_BUTTON,
- ROLE_SPLIT_PANE,
- ROLE_STATUS_BAR,
- ROLE_TABLE,
- ROLE_TABLE_CELL,
- ROLE_TABLE_COLUMN_HEADER,
- ROLE_TABLE_ROW_HEADER,
- ROLE_TEAROFF_MENU_ITEM,
- ROLE_TERMINAL,
- ROLE_TEXT,
- ROLE_TOGGLE_BUTTON,
- ROLE_TOOL_BAR,
- ROLE_TOOL_TIP,
- ROLE_TREE,
- ROLE_TREE_TABLE,
- ROLE_UNKNOWN
- }
-
- /*
- RelationType specifies a relationship between objects outside of the normal
- parent/child hierarchical relationship. It allows better semantic
- identification of how objects are associated with one another.
- */
- enum <uint32> RelationType {
- RELATION_NULL = 0,
- RELATION_LABEL_FOR,
- RELATION_LABELLED_BY,
- RELATION_CONTROLLER_FOR,
- RELATION_CONTROLLED_BY,
- RELATION_MEMBER_OF,
- RELATION_TOOLTIP_FOR,
- RELATION_NODE_CHILD_OF,
- RELATION_NODE_PARENT_OF,
- RELATION_EXTENDED,
- RELATION_FLOWS_TO,
- RELATION_FLOWS_FROM,
- RELATION_SUBWINDOW_OF,
- RELATION_EMBEDS,
- RELATION_EMBEDDED_BY,
- RELATION_POPUP_FOR,
- RELATION_PARENT_WINDOW_OF,
- RELATION_DESCRIPTION_FOR,
- RELATION_DESCRIBED_BY,
- RELATION_LAST_DEFINED
- }
-
- /*
- Describes a one-to-many relationship between accessible objects.
- */
- struct Relation {
- RelationType type;
- Reference objects [];
- }
-
- enum uint32 StateType {
- STATE_INVALID = 0,
- STATE_ACTIVE,
- STATE_ARMED,
- STATE_BUSY,
- STATE_CHECKED,
- STATE_COLLAPSED,
- STATE_DEFUNCT,
- STATE_EDITABLE,
- STATE_ENABLED,
- STATE_EXPANDABLE,
- STATE_EXPANDED,
- STATE_FOCUSABLE,
- STATE_FOCUSED,
- STATE_HAS_TOOLTIP,
- STATE_HORIZONTAL,
- STATE_ICONIFIED,
- STATE_MODAL,
- STATE_MULTI_LINE,
- STATE_MULTISELECTABLE,
- STATE_OPAQUE,
- STATE_PRESSED,
- STATE_RESIZABLE,
- STATE_SELECTABLE,
- STATE_SELECTED,
- STATE_SENSITIVE,
- STATE_SHOWING,
- STATE_SINGLE_LINE,
- STATE_STALE,
- STATE_TRANSIENT,
- STATE_VERTICAL,
- STATE_VISIBLE,
- STATE_MANAGES_DESCENDANTS,
- STATE_INDETERMINATE,
- STATE_REQUIRED,
- STATE_TRUNCATED,
- STATE_ANIMATED,
- STATE_INVALID_ENTRY,
- STATE_SUPPORTS_AUTOCOMPLETION,
- STATE_SELECTABLE_TEXT,
- STATE_IS_DEFAULT,
- STATE_VISITED,
- STATE_LAST_DEFINED
- }
-
- /*
- A two integer array representing a bit-field of currently held states.
- */
- typedef State uint32 [];
-
- /* A short string representing the object's name. */
- read property string Name;
-
- /* A string describing the object in more detail. */
- read property string Description;
-
- /* The accessible object which is this objects containing parent */
- read property Reference Parent;
-
- /* The number of children contained by this object */
- read property int32 ChildCount;
-
- /* Get the accessible child of this object at the given index */
- method GetChildAtIndex {
- int32 index;
- } reply {
- Reference child;
- }
-
- /* Get the index of this accessible object within its containing objects child list. */
- method GetIndexInParent reply {
- int32 index;
- }
-
- /* Access this objects non-hierarchical relationships to other accessible objects */
- method GetRelationSet reply {
- RelationSet relations;
- }
-
- /* Get the Role indicating the type of UI role played by this object. */
- method GetRole reply {
- Role role;
- }
-
- /* Get a string indicating the type of UI role played by this object */
- method GetRoleName reply {
- string role;
- }
-
- /*
- Get a string indicating the type of UI role played by this object,
- transalted to the current locale.
- */
- method GetLocalizedRoleName {
- string role;
- }
-
- /* Access the states currently held by this object. */
- method GetState reply {
- State state;
- }
-
- /*
- Get a properties applied to this object as a whole, as an
- set name-value pairs. As such these attributes may be considered
- weakly-typed properties or annotations, as distinct
- from the strongly-typed interface instance data.
- */
- method GetAttributes reply {
- Attributes attributes;
- }
-
- /*
- Get the containing Application for this object.
- */
- method GetApplication reply {
- Reference application;
- }
-}
-
+++ /dev/null
-
-/*
- An interface through which a user-actionable UI component can be manipulated.
-
- Typical actions include "click", "press", "release" or "open".
-*/
-interface org.freestandards.atspi.Action {
- /*
- Represents a single action.
- */
- struct Action {
- /* String containing short description of action. */
- string name;
- /* The description of an action may provide information about the result. */
- string description;
- /* A string containing the key-binding or "" if none exists */
- string key_binding;
- }
-
- property read int32 NActions;
-
- /* Get the description for the specified action. */
- method GetDescription {
- int32 index;
- } reply {
- string description
- }
-
- /* Get the name of the specified action */
- method GetName {
- int32 index;
- } reply {
- string name;
- }
-
- method GetLocalizedName {
- int32 index;
- } reply {
- string name;
- }
-
- /* Get the key-binding for the specified action. */
- method GetKeyBinding {
- int32 index;
- } reply {
- string key_binding;
- }
-
- /* Retrieves the actions associated with the object. */
- method GetActions reply {
- Action actions [];
- }
-
- /* Causes the object to perform the specified action. */
- method GetActions {
- int32 index;
- } reply {
- boolean success;
- }
-}
+++ /dev/null
-
-/*
- An interface identifying an object which is the root of the
- hierarchy associated with a running application.
-*/
-interface org.freestandards.atspi.Application {
-
- /* A string indicating the type of user interface toolkit used by the application. */
- read property string ToolkitName;
-
- /* A string indicating the version of the applications accessibility bridge. */
- read property string Version;
-
- /* A string indicating the version of the AT-SPI specification
- supported by the application */
- read property string AtspiVersion;
-
- /* Gets the locale in which the application is currently running. */
- method GetLocale {
- LocaleType locale_type;
- } reply {
- string locale;
- }
-}
+++ /dev/null
-
-interface org.freestandards.atspi.Cache {
-
- struct CacheItem {
- object path;
- Reference parent;
- int index_in_parent;
- int child_count;
- string[] interfaces;
- string name;
- Role role;
- string description;
- StateSet states;
- }
-
- method GetItems reply {
- CacheItem[] items;
- }
-
- signal AddAccessible {
- CacheItem item;
- }
-
- signal RemoveAccessible {
- Reference item;
- }
-}
+++ /dev/null
-
-/* TODO - Need to define the 'MatchRule' struct. */
-
-namespace org.freestandards.atspi {
- interface Collection {
- enum <uint32> SortOrder {
- SORT_ORDER_INVALID = 0,
- SORT_ORDER_CANONICAL,
- SORT_ORDER_FLOW,
- SORT_ORDER_TAB,
- SORT_ORDER_REVERSE_CANONICAL,
- SORT_ORDER_REVERSE_FLOW,
- SORT_ORDER_REVERSE_TAB,
- SORT_ORDER_LAST_DEFINED
- }
-
- enum <uint32> MatchType {
- MATCH_INVALID = 0,
- MATCH_ALL,
- MATCH_ANY,
- MATCH_NONE,
- MATCH_EMPTY,
- MATCH_LAST_DEFINED
- }
-
- enum <uint32> TreeTraversalType {
- TREE_RESTRICT_CHILDREN,
- TREE_RESTRICT_SIBLING,
- TREE_INORDER,
- TREE_LAST_DEFINED
- }
-
- method GetMatches {
- MatchRule rule;
- SortOrder sort_by;
- int32 count;
- boolean traverse;
- } reply {
- Reference matches [];
- }
-
- method GetMatchesTo {
- object current_object;
- MatchRule rule;
- SortOrder sort_by;
- TreeTraversalType type;
- boolean recurse;
- int32 count;
- boolean traverse;
- } reply {
- Reference matches [];
- }
-
- method GetMatchesFrom {
- object current_object;
- MatchRule rule;
- SortOrder sort_by;
- TreeTraversalType type;
- int32 count;
- boolean traverse;
- } reply {
- Reference matches [];
- }
-
- method GetActiveDescendent reply {
- Reference descendent;
- }
- }
-}
+++ /dev/null
-
-using org.freestandards.atspi.Accessible.Reference = Reference;
-
-/*
- The Component interface is implemented by objects which occupy on-screen space, e.g. objects
- which have onscreen visual representations. The methods in Component allow clients to identify
- where the objects lie in the onscreen coordinate system, their relative size, stacking order, and
- position. It also provides a mechanism whereby keyboard focus may be transferred to specific
- user interface elements programmatically. This is a 2D API, coordinates of 3D objects are projected into the
- 2-dimensional screen view for purposes of this interface.
-*/
-interface org.freestandards.atspi.Component {
-
- /*
- Used by Component, Image and Text interfaces to specify whether coordinates are
- relative to the window or screen.
- */
- enum <uint32> CoordType {
- COORD_TYPE_SCREEN = 0,
- COORD_TYPE_WINDOW = 1
- }
-
- /*
- Used by Component and Text interfaces, a struct defining a bounding rectange.
- The coordinate system is determined by the context of the API call.
- */
- struct BoundingBox {
- int32 x;
- int32 y;
- int32 width;
- int32 height;
- }
-
- /*
- Indicates the relative stacking order with respect to the onscreen visual representation.
-
- The order of layers, from bottom to top is:
- LAYER_BACKGROUND
- LAYER_WINDOW
- LAYER_MDI
- LAYER_CANVAS
- LAYER_WIDGET
- LAYER_POPUP
- LAYER_OVERLAY
- */
- enum <uint32> ComponentLayer {
- LAYER_INVALID,
- LAYER_BACKGROUND,
- LAYER_CANVAS,
- LAYER_WIDGET,
- LAYER_MDI,
- LAYER_POPUP,
- LAYER_OVERLAY,
- 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.
- */
- method Contains {
- int32 x;
- int32 y;
- CoordType coord_type;
- } reply {
- boolean within;
- }
-
- /*
- Return the accessible child whose bounding box contains the specified point.
- */
- method GetAccessibleAtPoint {
- int32 x;
- int32 y;
- CoordType coord_type;
- } reply {
- Reference child;
- }
-
- /*
- Obtain the components bounding box, in pixels, relative to the specified coordinate system.
- */
- method GetExtents {
- CoordType cood_type;
- } reply {
- BoundingBox box;
- }
-
- /*
- Obtain the position of the current component in the specified coordinate system.
- */
- method GetPosition {
- CoordType coord_type;
- } reply {
- int32 x;
- int32 y;
- }
-
- /*
- Obtain the size in the specified coordinate system.
- Fully contains teh object's visual representation without accounting for viewport clipping.
- */
- method GetSize reply {
- int32 width;
- int32 height;
- }
-
- /*
- The component layer in which this object resides.
- */
- method GetLayer reply {
- ComponentLayer layer;
- }
-
- /*
- Obtain the relative stacking order (i.e 'Z' order) of an object.
- Larger values indicate that an object is on 'top' of the stack.
- Only relevenat for objects in LAYER_MDI or LAYER_WINDOW.
- */
- method GetMDIZOrder reply {
- int16 order;
- }
-
- /*
- Request that an object obtain keyboard focus.
- */
- method GrabFocus reply {
- boolean success;
- }
-
- /*
- Obtain the alpha value of the component.
- Alpha values are used with Z-Order to determine whether an obeject obscures
- anothers visual representation.
- */
- 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;
- }
-}
+++ /dev/null
-
-interface org.freestandards.atspi.DeviceEventController {
-
- enum <uint32> KeySynthType {
- KEY_PRESS=0,
- KEY_RELEASE,
- KEY_PRESSRELEASE,
- KEY_SYM,
- KEY_STRING,
- KEY_LOCKMODIFIERS,
- KEY_UNLOCKMODIFIERS
- }
-
- /*
- Consumption of events and syncronous event delivery is a sore-thumb.
-
- The client should really have no say over what the DeviceEventController
- does with regards to event delivery as such the 'syncronous' flag is redundant.
-
- The 'global' flag is now useless as XEVIE is no longer maintained. As such
- the DeviceEventController will not recieve any device events from applications
- not participating.
-
- The only possibly useful flag is 'preemptive'. However all keyboard events are
- sent as pre-emptive from gail so its debateable whether even this flag is really
- in-use.
- */
- struct EventListenerMode {
- /* Controller should block while delivering this event. */
- boolean syncronous;
- /* Clients are allowed to consume this event. */
- boolean preemptive;
- /*
- Event notifications should be sent regardless of whether
- focused application participates in AT-SPI accessibility.
- */
- boolean global;
- }
-
- struct KeyDefinition {
- int32 keycode;
- int32 keysym;
- string keystring;
- int32 unused;
- }
-
- method RegisterKeystrokeListener {
- object listener;
- KeyDefinition[] keys;
- uint32 mask;
- EventType[] type;
- EventListenerMode mode;
- } reply {
- boolean success;
- }
-
- method DeregisterKeystrokeListener {
- object listener;
- KeyDefinition[] keys;
- uint32 mask;
- EventType[] type;
- }
-
- method RegisterDeviceEventListener {
- object listener;
- EventType[] type;
- } reply {
- boolean success;
- }
-
- method DeregisterDeviceEventListener {
- object listener;
- EventType[] type;
- }
-
- method NotifyListenersSync {
- DeviceEvent event;
- } reply {
- boolean consumed;
- }
-
- method NotifyListenersAsync {
- DeviceEvent event;
- }
-
- method GenerateKeyboardEvent {
- int32 keycode;
- string keystring;
- KeySynthType type;
- }
-
- method GenerateMouseEvent {
- int32 x;
- int32 y;
- string event_name;
- }
-}
+++ /dev/null
-
-namespace org.freestandards.atspi {
-
- enum <uint32> EventType {
- KEY_PRESSED_EVENT=0,
- KEY_RELEASED_EVENT,
- BUTTON_PRESSED_EVENT,
- BUTTON_RELEASED_EVENT
- }
-
- enum <uint32> ModifierType {
- MODIFIER_SHIFT=0,
- MODIFIER_SHIFTLOCK,
- MODIFIER_CONTROL,
- MODIFIER_ALT,
- MODIFIER_META,
- MODIFIER_META2,
- MODIFIER_META3,
- MODIFIER_NUMLOCK
- }
-
- struct DeviceEvent {
- EventType type;
- /* An identifier for the event, corresponds to XEvent serial number. */
- int32 stream_id;
- /* A numeric code identifying the hardware or button on which the event occured. */
- int16 hw_code;
- ModifierType modifiers;
- int32 timestamp;
- string event_string;
- boolean is_text;
- }
-}
+++ /dev/null
-
-/*
- Indicates the start of a document.
-
- Children are part of the document content.
-*/
-interface org.freestandards.atspi.Document {
-
- /* Gets the locale associated with the documents content. */
- method GetLocale reply {
- string locale;
- }
-
- /* Gets the value of a single attribute. */
- method GetAttributeValue {
- string key;
- } reply {
- string value;
- }
-
- /* Gets all attributes for the document as a whole. These are constant for all elements within the document.*/
- method GetAttributes reply {
- Attributes attributes;
- }
-}
+++ /dev/null
-
-namespace org.freestandards.atspi.Event {
-
- struct Event {
- string minor;
- int32 detail1;
- int32 detail2;
- variant val;
- Reference application;
- }
-
- interface Object {
- signal PropertyChange {Event event;}
- signal BoundsChanged {Event event;}
- signal LinkSelected {Event event;}
- signal StateChanged {Event event;}
- signal ChildrenChanged {Event event;}
- signal VisibleDataChanged {Event event;}
- signal SelectionChanged {Event event;}
- signal ModelChanged {Event event;}
- signal ActiveDescendantChanged {Event event;}
- signal RowInserted {Event event;}
- signal RowDeleted {Event event;}
- signal RowReordered {Event event;}
- signal ColumnInserted {Event event;}
- signal ColumnDeleted {Event event;}
- signal ColumnReordered {Event event;}
- signal TextBoundsChanged {Event event;}
- signal TextSelectionChanged {Event event;}
- signal TextChanged {Event event;}
- signal TextAttributesChanged {Event event;}
- signal TextCaretMoved {Event event;}
- signal AttributesChanged {Event event;}
- }
-
- interface Window {
- signal PropertyChange {Event event;}
- signal Minimize {Event event;}
- signal Maximize {Event event;}
- signal Restore {Event event;}
- signal Close {Event event;}
- signal Create {Event event;}
- signal Reparent {Event event;}
- signal DesktopCreate {Event event;}
- signal DesktopDestroy {Event event;}
- signal Destroy {Event event;}
- signal Activate {Event event;}
- signal Deactivate {Event event;}
- signal Raise {Event event;}
- signal Lower {Event event;}
- signal Move {Event event;}
- signal Resize {Event event;}
- signal Shade {Event event;}
- signal Ushade {Event event;}
- signal Restyle {Event event;}
- }
-
- interface Mouse {
- signal Abs {Event event;}
- signal Rel {Event event;}
- signal Button {Event event;}
- }
-
- interface Keyboard {
- signal Modifiers {Event event;}
- }
-
- interface Document {
- signal LoadComplete {Event event;}
- signal Reload {Event event;}
- signal LoadStopped {Event event;}
- signal ContentChanged {Event event;}
- signal AttributesChanged {Event event;}
- }
-
- interface Focus {
- signal Focus {Event event;}
- }
-}
+++ /dev/null
-
-namespace org.freestandards.atspi {
- /*
- Instances of Hyperlink are returned by Hypertext object and
- are the means by which end users and clients interact with linked
- content.
-
- Hyperlink instances DO NOT neccessarily implement the Accessible interface.
- */
- interface HyperLink {
- /* The number of separate anchors associated with this Hyperlink. */
- read property int32 NAnchors;
-
- /*
- The starting offset within the contianing Hypertext,
- with which this Hyperlink is associated.
- */
- read property int32 StartIndex;
-
- /*
- The ending offset within the containing Hypertext with which
- this Hyperlink is associated.
- */
- read property int32 EndIndex;
-
- /*
- Gets the i'th object associated with a Hyperlink.
- Objects returned should implement the Action interface.
- */
- method GetObject {
- int32 index;
- } reply {
- Reference anchor;
- }
-
- /*
- Obtain a resource locator, URI, which can be used to access the content
- which this link points to.
- */
- method GetUri {
- int32 index;
- } reply {
- string uri;
- }
-
- /*
- Check the hyperlink to see if a connection to its backing content can be
- established or if its URI is valid.
- */
- method IsValid reply {
- boolean valid;
- }
- }
-
- /*
- An interface used for objects which implement linking between multiple resource locations.
- A hypertext instance is associated with one or more hyperlinks which are associated with
- particular offests within the text.
- */
- interface Hypertext {
-
- method GetNLinks reply {
- int32 n_links;
- }
-
- method GetLink {
- int32 index;
- } reply {
- Reference hyperlink;
- }
-
- /*
- Get the hyperlink index, if any, associated with a particular text offset.
- */
- method GetLinkIndex {
- int32 offset;
- } reply {
- /* -1 if no hyperlink is associated. */
- int32 index;
- }
- }
-}
+++ /dev/null
-
-/*
- An interface implemented by objects which render image data or
- pictoral information on to the screen.
-*/
-interface org.freestandards.atspi.Image {
- /* A textual description of what is visually depicted on the screen. */
- read property string ImageDescription;
-
- /* A string corresponding to the local used by the image description. */
- read property string ImageLocale;
-
- /* Obtain a bounding box which entirely contains the image contents. */
- method GetImageExtents {
- CoordType coord_type;
- } reply {
- BoundingBox;
- }
-
- /* Get the coordinates of the image on the screen */
- method GetImagePosition {
- CoordType coord_type;
- } reply {
- int32 x;
- int32 y;
- }
-
- /* Get the size of the current on-screen view of the image. */
- method GetImageSize reply {
- int32 width;
- int32 height;
- }
-}
+++ /dev/null
-
-interface org.freestandards.atspi.DeviceEventListener {
-
- method NotifyEvent {
- DeviceEvent event;
- } reply {
- boolean success;
- }
-}
+++ /dev/null
-
-/*
- An interface which indicates that an object exposes a 'selection' model,
- allowing the 'selection' of one or more of its children.
-*/
-interface org.freestandards.atspi.Selection {
- /* The number of children that are currently selected. */
- read property int32 NSelectedChildren;
-
- /* Gets the ith SELECTED child. This is different to the index of all children. */
- method GetSelectedChild {
- int32 index;
- } reply {
- Reference child;
- }
-
- /* Select the child, add it to the list of selected children. */
- method SelectChild {
- int32 index;
- } reply {
- boolean success;
- }
-
- /* Deselect a child. The index refers to the index into the list of selected children. */
- method DeselectSelectedChild {
- int32 index;
- } reply {
- boolean success;
- }
-
- /* Determine whether a particular child is currently selected. */
- method IsChildSelected {
- int32 index;
- } reply {
- boolean selected;
- }
-
- /* Apptemt to select all of the containers children. */
- method SelectAll reply {
- boolean success;
- }
-
- /* Attempt to deselect all selected children. */
- method ClearSelection reply {
- boolean success;
- }
-
- /* Deselect a child. The index refers to the index into the list of all children. */
- method DeselectChild {
- int32 index;
- } reply {
- boolean success;
- }
-}
+++ /dev/null
-
-namespace org.freestandards.atspi {
- /*
- Accessible objects with the socket interface are capable of embeding other
- accessible heirarchies as one of their children. This allows
- applications to embed themselves in the heirarchy of the desktop object.
- */
- interface Socket {
- method Embed {
- Reference plug;
- } reply {
- Reference socket;
- }
-
- method Unembed {
- Reference plug;
- }
-
- /*
- The available signal indicates that a socket has been
- made available, it is for discovering new sockets.
- This is used for when the process containing the desktop
- object is re-started.
-
- D-Bus bus name must have been granted by the D-Bus bus.
- It is used to identify the new socket.
- */
- signal Available {
- Reference socket;
- }
-}
+++ /dev/null
-
-namespace org.freestandards.atspi {
-
- /*
- An interface used by containers whose data is arranged in a tabular form.
- Objects within tables are always children of the table object.
- */
- interface Table {
- read property int32 NRows;
-
- read property int32 NColumns;
-
- read property Reference caption;
-
- read property Reference summary;
-
- /* Number of rows where all cells are selected. */
- read property int32 NSelectedRows;
-
- /* Number of columns where all cells are selected. */
- read property int32 NSelectedColumns;
-
- method GetAccessibleAt {
- int32 row;
- int32 column;
- } reply {
- Reference cell;
- }
-
- /*
- Cells in a table are also children of the table in the standard heirarchy.
- This method gets the child index of the given cell.
- */
- method GetIndexAt {
- int32 row;
- int32 column;
- } reply {
- int32 index;
- }
-
- /*
- Indicates which row the child specified by index is on.
- */
- method GetRowAtIndex {
- int32 index;
- } reply {
- int32 row;
- }
-
- /*
- Indicates which column the child specified by index is on.
- */
- method GetColumnAtIndex {
- int32 index;
- } reply {
- int32 column;
- }
-
- /*
- Get a textual description of a row.
- */
- method GetRowDescription {
- int32 row;
- } reply {
- string description;
- }
-
- /*
- Get a textual description of a particular column.
- */
- method GetColumnDescription {
- int32 column;
- } reply {
- string description;
- }
-
- /*
- Get the number of rows spanned by the table cell at the specific row and column.
- method GetRowExtentAt {
- int32 row;
- int32 column;
- } reply {
- int32 rowspan;
- }
-
- /*
- Get the number of columns spanned by the table cell at the specific row and column.
- */
- method GetColumnExtentAt {
- int32 row;
- int32 column;
- } reply {
- int32 column_span;
- }
-
- /*
- Get the header object associated with a particular table row.
- */
- method GetRowHeader {
- int32 row;
- } reply {
- Reference header;
- }
-
- /*
- Get the header object associated with a particular table column.
- */
- method GetColumnHeader {
- int32 column;
- } reply {
- Reference header;
- }
-
- /*
- Obtain the indicies of all rows which are currently selected.
- */
- method GetSelectedRows reply {
- int32 indicies [];
- }
-
- /*
- Obtain the indicies of all columns which are currently selected.
- */
- method GetSelectedColumns reply {
- int32 indicies [];
- }
-
- method IsRowSelected {
- int32 row;
- } reply {
- boolean selected;
- }
-
- method IsColumnSelected {
- int32 column;
- } reply {
- boolean selected;
- }
-
- method IsSelected {
- int32 row;
- int32 column;
- } reply {
- boolean selected;
- }
-
- method AddRowSelection {
- int32 row;
- } reply {
- boolean success;
- }
-
- method AddColumnSelection {
- int32 column;
- } reply {
- boolean success;
- }
-
- method RemoveRowSelection {
- int32 row;
- } reply {
- boolean success;
- }
-
- method RemoveColumnSelection {
- int32 column;
- } reply {
- boolean success;
- }
-
- /*
- Given a child index determine the row and column indicies and extents
- and whether the cell is currently selected.
- */
- method GetRowColumnExtentsAtIndex {
- int32 index;
- } reply {
- boolean valid;
- int32 row;
- int32 column;
- int32 row_span;
- int32 column_span;
- boolean selected;
- }
- }
-}
+++ /dev/null
-
-namespace org.freestandards.atspi {
- /*
- The text interface should be implemented by objects which place textual information onscreen
- as character strings or glyphs. The text interface allows access to textual content including
- display attributes and semantic hints associated with runs of text, and to bounding boc information
- for glyphs and substrings. It also alows portions of text to be selected, if the objects StateSet
- includes STATE_SELECTABLE_TEXT.
- */
- interface Text {
- /*
- Specified the boundary conditions determining a run of text
- as returned from:
- GetTextAtOffset
- GetTextAfterOffset
- GetTextBeforeOffset
- */
- enum <uint32> TextBoundaryType {
- TEXT_BOUNDARY_CHAR,
- TEXT_BOUNDARY_WORD_START,
- TEXT_BOUNDARY_WORD_END,
- TEXT_BOUNDARY_SENTENCE_START,
- TEXT_BOUNDARY_SENTENCE_END,
- TEXT_BOUNDARY_LINE_START,
- TEXT_BOUNDARY_LINE_END
- }
-
- enum <uint32> TextClipType {
- TEXT_CLIP_NONE,
- TEXT_CLIP_MIN,
- TEXT_CLIP_MAX,
- TEXT_CLIP_BOTH
- }
-
- /*
- A structure used to define a contiguous range of text, including
- its (unattributed) textual content.
- */
- struct Range {
- int32 start_offset;
- int32 end_offset;
- int32 content;
- variant data;
- }
-
- /* The total number of character in the text object including whitespace. */
- read property int32 CharacterCount;
-
- /* The current offset of the text caret in the Text object. */
- read property int32 CaretOffset;
-
- /* Move the text caret to a given position. */
- method SetCaretOffset {
- int32 offset;
- } reply {
- boolean success;
- }
-
- /*
- Obtain the subset of text content that entirely precedes the given offset,
- delimited by character word, line or sentente boundaries.
- */
- method GetTextBeforeOffset {
- int32 offset;
- TextBoundaryType type;
- } reply {
- string s;
- int32 start_offset;
- int32 end_offset;
- }
-
- /*
- Obtain the subset of text content that includes the given offset,
- delimited by character word, line or sentente boundaries.
- */
- method GetTextAtOffset {
- int32 offset;
- TextBoundaryType type;
- } reply {
- string s;
- int32 start_offset;
- int32 end_offset;
- }
-
- /*
- Obtain the subset of text content that entirely follows the given offset,
- delimited by character word, line or sentente boundaries.
- */
- method GetTextAfterOffset {
- int32 offset;
- TextBoundaryType type;
- } reply {
- string s;
- int32 start_offset;
- int32 end_offset;
- }
-
- method GetCharacterAtOffset {
- int32 offset;
- } reply {
- /* UCS-4 representation of the character or 0 if offset out-of-range. */
- int32 c;
- }
-
- /*
- Get the value of a named attribute at a given offset.
- */
- method GetAttributeValue {
- int32 offset;
- string attribute_key;
- } reply {
- string attribute_value;
- }
-
- /* Deprecated in favor of GetAttributeRun. */
- method GetAttributes {
- int32 offset;
- } reply {
- Attributes attributes;
- int32 start_offset;
- int32 end_offset;
- }
-
- /* Deprecated in facor of GetDefaultAttributeSet. */
- method GetDefaultAttributes reply {
- Attributes attributes;
- }
-
- /*
- Obtain a bounding box of the character glyph at a particular character offset,
- in the given coordinate system.
- */
- method GetCharacterExtents {
- int32 offset;
- CoordType coord;
- } reply {
- int32 x;
- int32 y;
- int32 width;
- int32 height;
- }
-
- /*
- Get the offset of the character at a given on-screen coordinate. The coordinate
- system used is determined by the give coordinate type.
- */
- method GetOffsetAtPoint {
- int32 x;
- int32 y;
- CoordType coord;
- } reply {
- /* -1 if the point is outside the bounds of any glyph. */
- int32 offset;
- }
-
- /*
- Obtain the number of separate, contiguous selections in the current Text object.
- */
- method GetNSelections reply {
- int32 n_selections;
- }
-
- method GetSelection {
- int32 selection_index;
- } reply {
- int32 start_offset;
- int32 end_offset;
- }
-
- method AddSelection {
- int32 start_offset;
- int32 end_offset;
- } reply {
- boolean success;
- }
-
- method RemoveSelection {
- int32 selection_index;
- } reply {
- boolean success;
- }
-
- method SetSelection {
- int32 selection_index;
- int32 start_offset;
- int32 end_offset;
- } reply {
- boolean success;
- }
-
- /*
- Obtain the bounding box which entirely contains the given text range.
- Negative values may be obtained in the event that part of the text range is
- off-screen.
- */
- method GetRangeExtents {
- int32 start_offset;
- int32 end_offset;
- CoordType coord;
- } reply {
- int32 x;
- int32 y;
- int32 width;
- int32 height;
- }
-
- /*
- Return the text content within a bounding box.
-
- Depending on the clip type glyphs which are clipped by the bounding box
- may, or may not be inclide in the ranges returned.
- */
- method GetBoundedRanges {
- int32 x;
- int32 y;
- int32 width;
- int32 height;
- CoordType coord;
- ClipType x_clip;
- ClipType y_clip;
- } reply {
- RangeType ranges [];
- }
-
- /*
- Gets the attributes of a particular text objects defined at a given offset.
- The attributes are invariant over the offsets returned.
- */
- method GetAttributeRun {
- int32 offset;
- boolean include_defaults;
- } reply {
- Attributes attributes;
- int32 start_offset;
- int32 end_offset;
- }
-
- /*
- Gets the default attributes that apply to the entire text.
- */
- method GetAttributeSet reply {
- Attributes attributes'
- }
- }
-
- /*
- All objects supporting EditableText should also support the
- Text interface.
-
- Provides methods for modifying textual content of components which support editing.
- EditableText also interacts with the system clipboard.
- */
- interface EditableText {
- /*
- Replace the text contents with a new string, discarding the old contents.
- */
- method SetTextContents {
- string new_contents;
- } reply {
- boolean success;
- }
-
- /*
- Insert new text contents into a given location.
- */
- method InsertText {
- int32 position;
- string text;
- int32 length;
- } reply {
- boolean success;
- }
-
- /*
- Copy a range of text in to the system clipboard.
- */
- method CopyText {
- int32 start_pos;
- int32 end_pos;
- }
-
- /*
- Excise a range of text, copying it to the system clipboard.
- */
- method CutText {
- int32 start_pos;
- int32 end_pos;
- } reply {
- boolean success;
- }
-
- /*
- Excise a range of text from the object without copying to the system clipboard.
- */
- method DeleteText {
- int32 start_pos;
- int32 end_pos;
- } reply {
- boolean success;
- }
-
- /*
- Copy the contents of the system clip-board in to the text object.
- */
- method PasteText {
- int32 position;
- } reply {
- boolean success;
- }
- }
-}
+++ /dev/null
-/*
- Type definitions needed by multiple interfaces.
-*/
-
-namespace org.freestandards.atspi {
-
- /*
- A connection independent reference to a D-Bus object.
-
- The D-Bus object that is referenced will support at-least
- the org.freestandards.atspi.Accessible interface.
- */
- struct Reference {
- /* The D-Bus connection name where the object resides. */
- string name;
- /* The D-Bus path of the object. */
- object path;
- }
-
- /*
- Attributes are weakly typed properties of an object consisting of string-string
- key-value pairs.
- */
- typedef Attributes dict <string, string>;
-}
+++ /dev/null
-
-/*
- An interface supporting a one-dimensional scalar quantity
- to be modified, or which reflects a scalar value.
- */
-interface org.freestandards.atspi.Value {
-
- read property double MinimumValue;
-
- read property double MaximumValue;
-
- read property double MinimumIncrement;
-
- read property double currentValue;
-}
project('at-spi2-core', 'c',
- version: '2.31.1',
+ version: '2.34.0',
license: 'LGPLv2.1+',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',
'c_std=c99',
],
- meson_version: '>= 0.40.1')
+ meson_version: '>= 0.50.0')
add_project_arguments([ '-D_POSIX_C_SOURCE=200809L', '-D_DEFAULT_SOURCE' ], language: 'c')
glib_dep = dependency('glib-2.0', version: glib_req_version)
gobject_dep = dependency('gobject-2.0', version: gobject_req_version)
gio_dep = dependency('gio-2.0', version: gio_req_version)
-dl_dep = cc.find_library('dl', required: false)
+if cc.has_function('dlopen')
+ dl_dep = []
+elif cc.has_function('dlopen', args: '-ldl')
+ dl_dep = cc.find_library('dl')
+else
+ error('Could not find a library with the dlopen function')
+endif
x11_deps = []
-x11_option = get_option('enable-x11')
+x11_option = get_option('x11')
if x11_option != 'no'
x11_dep = dependency('x11', required: false)
# introspection support
have_gir = false
-introspection_option = get_option('enable-introspection')
+introspection_option = get_option('introspection')
if introspection_option != 'no'
gir_dep = dependency('gobject-introspection-1.0', version: '>= 0.6.7', required: false)
subdir('registryd')
subdir('test')
-if get_option('enable_docs')
+if get_option('docs')
subdir('doc/libatspi')
endif
description: 'Location of the systemd user services',
type: 'string',
value: 'default')
-option('enable_docs',
+option('docs',
description: 'Generate API reference for atspi (requires GTK-Doc)',
type: 'boolean',
value: false)
-
-option('enable-introspection', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto', description: 'Enable GObject Introspection (depends on GObject)')
-
-option('enable-x11', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto', description: 'Enable X11 support')
+option('introspection',
+ description: 'Enable GObject Introspection (depends on GObject)',
+ type: 'combo',
+ choices: ['yes', 'no', 'auto'],
+ value: 'auto')
+option('x11',
+ description: 'Enable X11 support',
+ type: 'combo',
+ choices: ['yes', 'no', 'auto'],
+ value: 'auto')
* Copyright 2008 Novell, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <stdlib.h>
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef SPI_DE_MARSHALLER_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef SPI_DE_TYPES_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
/* deviceeventcontroller-x11.c: X-specific DeviceEventController support */
(sym_rtn == keysym)) {
retval = Mod3Mask;
}
+ else if (XkbLookupKeySym (display, keycode, Mod4Mask, &mods_rtn, &sym_rtn) &&
+ (sym_rtn == keysym)) {
+ retval = Mod4Mask;
+ }
+ else if (XkbLookupKeySym (display, keycode, Mod5Mask, &mods_rtn, &sym_rtn) &&
+ (sym_rtn == keysym)) {
+ retval = Mod5Mask;
+ }
else if (XkbLookupKeySym (display, keycode,
ShiftMask | Mod2Mask, &mods_rtn, &sym_rtn) &&
(sym_rtn == keysym)) {
(sym_rtn == keysym)) {
retval = (Mod4Mask | ShiftMask);
}
+ else if (XkbLookupKeySym (display, keycode,
+ ShiftMask | Mod5Mask, &mods_rtn, &sym_rtn) &&
+ (sym_rtn == keysym)) {
+ retval = (Mod5Mask | ShiftMask);
+ }
else
retval = 0xFFFF;
return retval;
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
/* deviceeventcontroller.c: implement the DeviceEventController interface */
object_class->finalize = spi_device_event_controller_object_finalize;
#ifdef HAVE_X11
- if (g_getenv ("DISPLAY"))
+ if (g_getenv ("DISPLAY") != NULL && g_getenv ("WAYLAND_DISPLAY") == NULL)
spi_dec_setup_x11 (klass);
else
#endif
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef SPI_DEVICE_EVENT_CONTROLLER_H_
* Copyright 2009 Nokia.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <glib.h>
* Copyright 2009 Nokia.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef SPI_DISPLAY_H_
* Copyright 2009 Nokia.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <glib.h>
* Copyright 2009 Nokia.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef SPI_EVENT_SOURCE_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef SPI_KEYMASKS_H_
dl_dep,
]
-x11_option = get_option('enable-x11')
+x11_option = get_option('x11')
if x11_option != 'no'
if x11_dep.found()
registryd_sources += [
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef SPI_PATHS_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <config.h>
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef REENTRANT_LIST_H_
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <stdlib.h>
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include <config.h>
* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef SPI_REGISTRY_H_
<property name="Locale" type="s" access="read"/>
+ <property name="AccessibleId" type="s" access="read"/>
+
<method name="GetChildAtIndex">
<arg direction="in" name="index" type="i"/>
<arg direction="out" type="(so)"/>
<arg direction="out" type="a{ss}"/>
</method>
+ <method name="ScrollSubstringTo">
+ <arg direction="in" name="startOffset" type="i"/>
+ <arg direction="in" name="endOffset" type="i"/>
+ <arg direction="in" name="type" type="u"/>
+ </method>
+
+ <method name="ScrollSubstringToPoint">
+ <arg direction="in" name="startOffset" type="i"/>
+ <arg direction="in" name="endOffset" type="i"/>
+ <arg direction="in" name="type" type="u"/>
+ <arg direction="in" name="x" type="i"/>
+ <arg direction="in" name="y" type="i"/>
+ </method>
+
</interface>
</node>