2.34.0 73/224273/1 upstream/2.34.0
authorArtur Świgoń <a.swigon@samsung.com>
Fri, 7 Feb 2020 06:35:42 +0000 (07:35 +0100)
committerArtur Świgoń <a.swigon@samsung.com>
Fri, 7 Feb 2020 09:32:24 +0000 (10:32 +0100)
Change-Id: I514111ff14f955ae7cc405bf8ff6298d7e982175

116 files changed:
AUTHORS
COPYING
INSTALL
NEWS
at-spi2-core.doap
atspi/atspi-accessible-private.h
atspi/atspi-accessible.c
atspi/atspi-accessible.h
atspi/atspi-action.c
atspi/atspi-action.h
atspi/atspi-application.c
atspi/atspi-application.h
atspi/atspi-collection.c
atspi/atspi-collection.h
atspi/atspi-component.c
atspi/atspi-component.h
atspi/atspi-constants.h
atspi/atspi-device-listener-private.h
atspi/atspi-device-listener.c
atspi/atspi-device-listener.h
atspi/atspi-document.c
atspi/atspi-document.h
atspi/atspi-editabletext.c
atspi/atspi-editabletext.h
atspi/atspi-event-listener-private.h
atspi/atspi-event-listener.c
atspi/atspi-event-listener.h
atspi/atspi-gmain.c
atspi/atspi-gmain.h
atspi/atspi-hyperlink.c
atspi/atspi-hyperlink.h
atspi/atspi-hypertext.c
atspi/atspi-hypertext.h
atspi/atspi-image.c
atspi/atspi-image.h
atspi/atspi-matchrule-private.h
atspi/atspi-matchrule.c
atspi/atspi-matchrule.h
atspi/atspi-misc-private.h
atspi/atspi-misc.c
atspi/atspi-misc.h
atspi/atspi-mutter-private.h [new file with mode: 0644]
atspi/atspi-mutter.c [new file with mode: 0644]
atspi/atspi-object.c
atspi/atspi-object.h
atspi/atspi-private.h
atspi/atspi-registry.c
atspi/atspi-registry.h
atspi/atspi-relation.c
atspi/atspi-relation.h
atspi/atspi-selection.c
atspi/atspi-selection.h
atspi/atspi-stateset.c
atspi/atspi-stateset.h
atspi/atspi-table-cell.c
atspi/atspi-table-cell.h
atspi/atspi-table.c
atspi/atspi-table.h
atspi/atspi-text.c
atspi/atspi-text.h
atspi/atspi-types.h
atspi/atspi-value.c
atspi/atspi-value.h
atspi/atspi.h
atspi/atspimarshal.list [new file with mode: 0644]
atspi/meson.build
bus/at-spi-bus-launcher.c
bus/meson.build
dbind/dbind-any.c
dbind/dbind-any.h
dbind/dbind.c
dbind/dbind.h
dbind/dbtest.c
doc/libatspi/libatspi-sections.txt
doc/libatspi/tmpl/atspi-accessible.sgml
idl/accessible.didl [deleted file]
idl/action.didl [deleted file]
idl/application.didl [deleted file]
idl/cache.didl [deleted file]
idl/collection.didl [deleted file]
idl/component.didl [deleted file]
idl/controller.didl [deleted file]
idl/device.didl [deleted file]
idl/document.didl [deleted file]
idl/event.didl [deleted file]
idl/hypertext.didl [deleted file]
idl/image.didl [deleted file]
idl/listener.didl [deleted file]
idl/selection.didl [deleted file]
idl/socket.didl [deleted file]
idl/table.didl [deleted file]
idl/text.didl [deleted file]
idl/types.didl [deleted file]
idl/value.didl [deleted file]
meson.build
meson_options.txt
registryd/de-marshaller.c
registryd/de-marshaller.h
registryd/de-types.h
registryd/deviceeventcontroller-x11.c
registryd/deviceeventcontroller.c
registryd/deviceeventcontroller.h
registryd/display.c
registryd/display.h
registryd/event-source.c
registryd/event-source.h
registryd/keymasks.h
registryd/meson.build
registryd/paths.h
registryd/reentrant-list.c
registryd/reentrant-list.h
registryd/registry-main.c
registryd/registry.c
registryd/registry.h
xml/Accessible.xml
xml/Text.xml

diff --git a/AUTHORS b/AUTHORS
index 6f89ab4..9f0f539 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,7 +2,7 @@
 Authors of AT-SPI D-Bus implementation
 --------------------------------------
 
-Mike Gorse <mgorse@novell.com>
+Mike Gorse <mgorse@suse.com>
 Mark Doffman <mark.doffman@codethink.co.uk>
 
 
diff --git a/COPYING b/COPYING
index b8f9ad6..4362b49 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -1,13 +1,14 @@
-                  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
 
@@ -16,97 +17,109 @@ freedom to share and change it.  By contrast, the GNU General Public
 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
@@ -145,7 +158,7 @@ Library.
   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
@@ -254,8 +267,8 @@ Library will still fall under Section 6.)
 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
@@ -282,23 +295,31 @@ of these things:
     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.
@@ -308,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
 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
@@ -347,9 +368,9 @@ Library), the recipient automatically receives a license from the
 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
@@ -390,7 +411,7 @@ excluded.  In such case, this License incorporates the limitation as if
 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.
 
@@ -401,7 +422,7 @@ conditions either of that version or of any later version published by
 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
@@ -435,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 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
@@ -453,19 +474,18 @@ convey the exclusion of warranty; and each file should have at least the
     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.
 
diff --git a/INSTALL b/INSTALL
index 54c3246..c9d569f 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,26 +1,26 @@
 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)
diff --git a/NEWS b/NEWS
index 0dd86dc..f18af9a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,68 @@
+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.
index 1ac8f84..85d64df 100644 (file)
@@ -5,31 +5,28 @@
          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>
index 496f7d7..e7e748b 100644 (file)
@@ -8,19 +8,19 @@
  *
  *
  * 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_
@@ -29,6 +29,7 @@
 G_BEGIN_DECLS
 
 #include "atspi-accessible.h"
+#include "atspimarshal.h"
 
 struct _AtspiAccessiblePrivate
 {
index e7f1446..fd6737d 100644 (file)
@@ -7,28 +7,82 @@
  * 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)
 {
@@ -109,6 +163,13 @@ static gint accessible_count = 0;
 #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
@@ -119,7 +180,7 @@ atspi_accessible_init (AtspiAccessible *accessible)
 
   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
@@ -189,6 +250,8 @@ atspi_accessible_finalize (GObject *object)
 #endif
 
   G_OBJECT_CLASS (atspi_accessible_parent_class)->finalize (object);
+
+  /* TODO: remove emission hook */
 }
 
 static void
@@ -200,6 +263,33 @@ atspi_accessible_class_init (AtspiAccessibleClass *klass)
   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);
 }
 
 /**
@@ -1767,6 +1857,33 @@ atspi_accessible_get_object_locale (AtspiAccessible *accessible, GError **error)
   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)
 {
index 443e395..13e4962 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
@@ -64,6 +64,8 @@ typedef struct _AtspiAccessibleClass AtspiAccessibleClass;
 struct _AtspiAccessibleClass
 {
   AtspiObjectClass parent_class;
+
+  void (*region_changed) (AtspiAccessible *accessible, gint current_offset, gint last_offset);
 };
 
 GType atspi_accessible_get_type (void); 
@@ -167,6 +169,8 @@ void atspi_accessible_clear_cache (AtspiAccessible *obj);
 
 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);
index 731773a..bc9cb7b 100644 (file)
@@ -6,19 +6,19 @@
  * 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"
index 99de8af..e1056e7 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
index f7dd225..cccaf86 100644 (file)
@@ -6,19 +6,19 @@
  * 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"
index a3826d5..0662031 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
@@ -64,6 +64,8 @@ struct _AtspiApplicationClass
 AtspiApplication *
 _atspi_application_new (const char *bus_name);
 
+GType atspi_application_get_type (void);
+
 G_END_DECLS
 
 #endif /* _ATSPI_APPLICATION_H_ */
index d3f27da..d4d1537 100644 (file)
@@ -6,19 +6,19 @@
  * 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"
index 2ba9361..9b564c5 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index ed22582..59879bb 100644 (file)
@@ -6,19 +6,19 @@
  * 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.
  */
 
 /*
@@ -129,6 +129,8 @@ atspi_component_get_accessible_at_point (AtspiComponent *obj,
  *         (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.
  **/
@@ -164,6 +166,8 @@ atspi_component_get_extents (AtspiComponent *obj,
  *         (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.
  **/
@@ -192,6 +196,8 @@ atspi_component_get_position (AtspiComponent *obj,
  * @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.
  **/
index c84232d..4e8f0ad 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
index b9f41ef..8657ead 100644 (file)
@@ -6,19 +6,19 @@
  * 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
@@ -1234,6 +1234,12 @@ typedef enum {
  * @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.
  *
@@ -1367,6 +1373,8 @@ typedef enum {
     ATSPI_ROLE_DESCRIPTION_TERM,
     ATSPI_ROLE_DESCRIPTION_VALUE,
     ATSPI_ROLE_FOOTNOTE,
+    ATSPI_ROLE_CONTENT_DELETION,
+    ATSPI_ROLE_CONTENT_INSERTION,
     ATSPI_ROLE_LAST_DEFINED,
 } AtspiRole;
 
@@ -1375,7 +1383,7 @@ typedef enum {
  *
  * One higher than the highest valid value of #AtspiRole.
  */
-#define ATSPI_ROLE_COUNT (125+1)
+#define ATSPI_ROLE_COUNT (127+1)
 
 typedef enum
 {
@@ -1462,6 +1470,9 @@ 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
index 1089e45..d8b533c 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
index 56597f7..8e04c41 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
index 3b1b96d..d91a203 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index 98dfc4f..a92c0e2 100644 (file)
@@ -6,19 +6,19 @@
  * 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"
index f326d89..429b8c6 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
index 58ac715..350617e 100644 (file)
@@ -6,19 +6,19 @@
  * 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"
@@ -86,8 +86,8 @@ atspi_editable_text_set_text_contents (AtspiEditableText *obj,
  * @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.
index 59b2331..efa5630 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
index 260db74..5a1a872 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index 6a3fe6b..249890b 100644 (file)
@@ -7,24 +7,25 @@
  * 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
@@ -169,12 +170,15 @@ static GList *event_listeners = NULL;
 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)
   {
@@ -378,14 +382,14 @@ convert_event_type_to_dbus (const char *eventType, char **categoryp, char **name
   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);
@@ -467,6 +471,9 @@ listener_entry_free (EventListenerEntry *e)
  *            object:model-changed
  *            object:active-descendant-changed
  *
+ *  (screen reader events)
+*             screen-reader:region-changed
+ *
  *  (window events)
  *
  *            window:minimize
@@ -506,6 +513,9 @@ listener_entry_free (EventListenerEntry *e)
  *            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.
  **/
@@ -872,6 +882,7 @@ atspi_event_copy (AtspiEvent *src)
   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;
 }
 
@@ -881,6 +892,7 @@ atspi_event_free (AtspiEvent *event)
   g_object_unref (event->source);
   g_free (event->type);
   g_value_unset (&event->any_data);
+  g_object_unref (event->sender);
   g_free (event);
 }
 
@@ -951,6 +963,7 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data)
 {
   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;
@@ -965,7 +978,7 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data)
   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;
   }
 
@@ -1014,14 +1027,17 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data)
     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);
@@ -1032,17 +1048,24 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data)
       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;
     }
@@ -1064,6 +1087,8 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data)
     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);
index ee52fac..b7ad327 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index 588a60d..8d74442 100644 (file)
@@ -8,7 +8,7 @@
  * 
  * 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,
index 8e2396c..9efbe5e 100644 (file)
@@ -5,7 +5,7 @@
  * 
  * 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,
index 80f8a54..c01f547 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
index 86efa7b..7caea90 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index ca186ea..7ddaab6 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
index bebcf51..891fd3a 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index 4f17326..4fd5ae7 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
@@ -49,6 +49,8 @@ atspi_image_get_image_description (AtspiImage *obj, GError **error)
  * @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.
@@ -78,6 +80,8 @@ atspi_image_get_image_size (AtspiImage *obj, GError **error)
  *
  * 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. 
@@ -112,6 +116,8 @@ atspi_image_get_image_position (AtspiImage *obj,
  *
  * 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.
index 3fa40ef..57fe3a1 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index e55c2fa..a8b579a 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index cf6a306..6fb4210 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
index 0a006d0..ddcb0d6 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index 314746e..f0b5adb 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
@@ -166,6 +166,8 @@ gboolean _atspi_get_allow_sync ();
 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_ */
index 9b97b18..9e8595a 100644 (file)
@@ -7,19 +7,19 @@
  * 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.
  */
 
 /*
@@ -159,7 +159,8 @@ cleanup ()
   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));
   }
 
@@ -531,8 +532,9 @@ handle_get_items (DBusPendingCall *pending, void *user_data)
   {
     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
@@ -1590,7 +1592,8 @@ atspi_get_a11y_bus (void)
   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)
@@ -1849,3 +1852,50 @@ _atspi_set_error_no_sync (GError **error)
   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;
+}
index f13596f..0461728 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
diff --git a/atspi/atspi-mutter-private.h b/atspi/atspi-mutter-private.h
new file mode 100644 (file)
index 0000000..49140d0
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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_ */
diff --git a/atspi/atspi-mutter.c b/atspi/atspi-mutter.c
new file mode 100644 (file)
index 0000000..4445c18
--- /dev/null
@@ -0,0 +1,407 @@
+/*
+ * 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;
+  }
+}
index 3545845..a838ba0 100644 (file)
@@ -6,19 +6,19 @@
  * 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"
index 69dd551..5acbde8 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
index 2cf5693..9ddc600 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
@@ -30,6 +30,7 @@
 #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"
 
index 76b1926..c50ae20 100644 (file)
@@ -7,19 +7,19 @@
  * 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 */
@@ -424,6 +424,12 @@ atspi_deregister_device_event_listener (AtspiDeviceListener *listener,
   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
@@ -456,6 +462,12 @@ atspi_generate_keyboard_event (glong keyval,
   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 = "";
@@ -492,6 +504,14 @@ atspi_generate_mouse_event (glong x, glong y, const gchar *name, GError **error)
   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,
@@ -506,6 +526,27 @@ atspi_generate_mouse_event (glong x, glong y, const gchar *name, GError **error)
   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)
 {
index 18e32a6..43150c2 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
@@ -71,6 +71,8 @@ atspi_generate_keyboard_event (glong keyval,
 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_ */
index 82bb668..c441f2b 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
index 4eecad3..0c32d6a 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index 7318989..0e72845 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
index 8ac7e44..dda225a 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index 366c48b..dd99d91 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
index f6fd32f..e9e261e 100644 (file)
@@ -7,19 +7,19 @@
  * 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_
index 1df1fa9..83fe534 100644 (file)
@@ -7,19 +7,19 @@
  * 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 */
@@ -34,7 +34,7 @@ get_object_array_and_unref (DBusMessage *reply)
   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;
@@ -58,6 +58,8 @@ get_object_array_and_unref (DBusMessage *reply)
  * @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.
@@ -101,6 +103,8 @@ atspi_table_cell_get_column_header_cells (AtspiTableCell *obj, GError **error)
  * @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.
@@ -206,6 +210,8 @@ atspi_table_cell_get_position (AtspiTableCell *obj,
  * @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,
index 757ab0d..b16cd4b 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index b17e2f1..08718f4 100644 (file)
@@ -7,19 +7,19 @@
  * 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 */
@@ -285,6 +285,8 @@ atspi_table_get_column_description (AtspiTable *obj,
  * 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.
  **/
@@ -313,6 +315,8 @@ atspi_table_get_row_extent_at (AtspiTable *obj,
  * 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.
  **/
@@ -646,6 +650,8 @@ atspi_table_remove_column_selection (AtspiTable *obj,
  * 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
index 1295df1..942f2f6 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index 1e887d3..de99773 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
@@ -618,6 +618,8 @@ atspi_text_get_character_at_offset (AtspiText *obj,
  *
  * 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.
  *
@@ -690,6 +692,8 @@ atspi_text_get_offset_at_point (AtspiText *obj,
  *        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.
@@ -892,6 +896,72 @@ atspi_text_set_selection (AtspiText *obj,
   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)
 {
index 8e11eb0..994d12b 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
@@ -137,6 +137,9 @@ gboolean atspi_text_remove_selection (AtspiText *obj, gint selection_num, GError
 
 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_ */
index e458a8e..2631baf 100644 (file)
@@ -7,19 +7,19 @@
  *           
  *
  * 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_
@@ -89,6 +89,7 @@ struct _AtspiEvent
   gint         detail1;
   gint         detail2;
   GValue any_data;
+  AtspiAccessible *sender;
 };
 
 /**
index 642533d..28acade 100644 (file)
@@ -7,19 +7,19 @@
  * 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"
index 6a1e531..a012793 100644 (file)
@@ -8,19 +8,19 @@
  *           
  *
  * 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_
index dc92de0..89ff20f 100644 (file)
@@ -6,19 +6,19 @@
  * 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
diff --git a/atspi/atspimarshal.list b/atspi/atspimarshal.list
new file mode 100644 (file)
index 0000000..2d9dd51
--- /dev/null
@@ -0,0 +1,25 @@
+# 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
index b7a9357..8a2ca27 100644 (file)
@@ -13,6 +13,7 @@ atspi_sources = [
   'atspi-hypertext.c',
   'atspi-image.c',
   'atspi-matchrule.c',
+  'atspi-mutter.c',
   'atspi-misc.c',
   'atspi-object.c',
   'atspi-registry.c',
@@ -57,7 +58,14 @@ atspi_headers = [
 
 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' ],
@@ -67,7 +75,7 @@ atspi_enums = gnome.mkenums('atspi-enum-types',
                             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 ],
index 17f01c0..b4f49b8 100644 (file)
@@ -5,19 +5,19 @@
  * 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"
@@ -63,6 +63,9 @@ typedef struct {
   /* -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;
@@ -323,6 +326,7 @@ ensure_a11y_bus_daemon (A11yBusLauncher *app, char *config_path)
     {
       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]);
@@ -466,20 +470,22 @@ ensure_a11y_bus (A11yBusLauncher *app)
 #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;
@@ -677,16 +683,6 @@ on_bus_acquired (GDBusConnection *connection,
     }
   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",
@@ -728,6 +724,18 @@ on_name_acquired (GDBusConnection *connection,
                   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,
@@ -771,50 +779,6 @@ init_sigterm_handling (A11yBusLauncher *app)
                   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)
 {
@@ -860,9 +824,6 @@ main (int    argc,
   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);
 
@@ -931,19 +892,20 @@ main (int    argc,
    * 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)
index 5c7e03d..155dc53 100644 (file)
@@ -44,6 +44,7 @@ else
                              '/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()
index ae499d7..efdba73 100644 (file)
@@ -2,19 +2,19 @@
  * 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 */
index dd2a27b..859c895 100644 (file)
@@ -2,19 +2,19 @@
  * 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_
index 9d7304e..e154f85 100644 (file)
@@ -2,19 +2,19 @@
  * 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>
index f7298d0..0c10c7d 100644 (file)
@@ -2,19 +2,19 @@
  * 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_
index 42c1919..4f58540 100644 (file)
@@ -2,19 +2,19 @@
  * 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>
index 14304ff..d7bfc10 100644 (file)
@@ -30,6 +30,8 @@ atspi_text_set_selection
 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
@@ -249,6 +251,7 @@ atspi_accessible_get_table_iface
 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
@@ -501,6 +504,7 @@ atspi_register_device_event_listener
 atspi_deregister_device_event_listener
 atspi_generate_keyboard_event
 atspi_generate_mouse_event
+atspi_set_reference_window
 </SECTION>
 
 <SECTION>
index 5b3c8ea..0e161ee 100644 (file)
@@ -322,3 +322,13 @@ actually have children.
 @Returns: 
 
 
+<!-- ##### FUNCTION atspi_accessible_get_accessible_id ##### -->
+<para>
+
+</para>
+
+@obj: 
+@error: 
+@Returns: 
+
+
diff --git a/idl/accessible.didl b/idl/accessible.didl
deleted file mode 100644 (file)
index eee462f..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-
-/*
-  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;
-       }
-}
-
diff --git a/idl/action.didl b/idl/action.didl
deleted file mode 100644 (file)
index 48e89aa..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-/*
-  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;
-       }       
-}
diff --git a/idl/application.didl b/idl/application.didl
deleted file mode 100644 (file)
index 546fcfd..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-/*
-  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;
-       }
-}
diff --git a/idl/cache.didl b/idl/cache.didl
deleted file mode 100644 (file)
index 3cf9b11..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-
-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;
-       }
-}      
diff --git a/idl/collection.didl b/idl/collection.didl
deleted file mode 100644 (file)
index f3eee6e..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-/* 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;
-               }
-       }
-}
diff --git a/idl/component.didl b/idl/component.didl
deleted file mode 100644 (file)
index 31cfbf0..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-
-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;
-       }
-}
diff --git a/idl/controller.didl b/idl/controller.didl
deleted file mode 100644 (file)
index 4519a0a..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-
-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;
-       }
-}
diff --git a/idl/device.didl b/idl/device.didl
deleted file mode 100644 (file)
index 78bdd12..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-
-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;
-       }
-}
diff --git a/idl/document.didl b/idl/document.didl
deleted file mode 100644 (file)
index ce2a4f0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-
-/*
-  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;
-       }
-}
diff --git a/idl/event.didl b/idl/event.didl
deleted file mode 100644 (file)
index d4c75cc..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-
-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;}
-       }
-}
diff --git a/idl/hypertext.didl b/idl/hypertext.didl
deleted file mode 100644 (file)
index 334dafd..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-
-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;
-               }       
-       }
-}
diff --git a/idl/image.didl b/idl/image.didl
deleted file mode 100644 (file)
index 9dee626..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/*
-  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;
-       }
-}
diff --git a/idl/listener.didl b/idl/listener.didl
deleted file mode 100644 (file)
index 7e3f6a1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-interface org.freestandards.atspi.DeviceEventListener {
-
-       method NotifyEvent {
-               DeviceEvent event;
-       } reply {
-               boolean success;
-       }
-}
diff --git a/idl/selection.didl b/idl/selection.didl
deleted file mode 100644 (file)
index 66fbef7..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-
-/*
-  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;
-       }
-}
diff --git a/idl/socket.didl b/idl/socket.didl
deleted file mode 100644 (file)
index 336ca6c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-
-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;
-               }
-}
diff --git a/idl/table.didl b/idl/table.didl
deleted file mode 100644 (file)
index ae1b8f0..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-
-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;
-               }
-       }
-}
diff --git a/idl/text.didl b/idl/text.didl
deleted file mode 100644 (file)
index 07ce85e..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-
-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;
-               }       
-       }
-}
diff --git a/idl/types.didl b/idl/types.didl
deleted file mode 100644 (file)
index b8c4129..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  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>;
-}
diff --git a/idl/value.didl b/idl/value.didl
deleted file mode 100644 (file)
index 476cb43..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-
-/* 
-  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;
-}
index 351b207..0a2f75e 100644 (file)
@@ -1,12 +1,12 @@
 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')
 
@@ -52,10 +52,16 @@ libdbus_dep = dependency('dbus-1', version: libdbus_req_version)
 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)
 
@@ -96,7 +102,7 @@ at_spi_conf.set('ALIGNOF_DBIND_STRUCT', cc.alignment('dbind_struct', prefix: 'ty
 # 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)
 
@@ -117,7 +123,7 @@ subdir('bus')
 subdir('registryd')
 subdir('test')
 
-if get_option('enable_docs')
+if get_option('docs')
   subdir('doc/libatspi')
 endif
 
index f8ec862..c8d5fd1 100644 (file)
@@ -19,11 +19,17 @@ option('systemd_user_dir',
        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')
index fef8e48..2f212b0 100644 (file)
@@ -5,19 +5,19 @@
  * 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>
index 9d55a9d..93eaa42 100644 (file)
@@ -7,19 +7,19 @@
  * 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_
index f08823c..ea05dda 100644 (file)
@@ -7,19 +7,19 @@
  * 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_
index e5b8dfc..df16bd8 100644 (file)
@@ -6,19 +6,19 @@
  * 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 */
@@ -140,6 +140,14 @@ keysym_mod_mask (KeySym keysym, KeyCode keycode)
                 (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)) {
@@ -155,6 +163,11 @@ keysym_mod_mask (KeySym keysym, KeyCode keycode)
                 (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;
index 4e25ad6..acd089b 100644 (file)
@@ -6,19 +6,19 @@
  * 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 */
@@ -1856,7 +1856,7 @@ spi_device_event_controller_class_init (SpiDEControllerClass *klass)
   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
index 0c6eee4..94c01cf 100644 (file)
@@ -6,19 +6,19 @@
  * 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_
index 2ba781c..011f294 100644 (file)
@@ -5,19 +5,19 @@
  * 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>
index 2238a55..6d53e7b 100644 (file)
@@ -5,19 +5,19 @@
  * 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_
index 9ad3ec5..e82908a 100644 (file)
@@ -5,19 +5,19 @@
  * 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>
index 55ab663..ad080f7 100644 (file)
@@ -5,19 +5,19 @@
  * 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_
index 4e838b8..9f6c2c9 100644 (file)
@@ -6,19 +6,19 @@
  * 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_
index eb8236e..c2404d2 100644 (file)
@@ -16,7 +16,7 @@ registryd_deps = [
   dl_dep,
 ]
 
-x11_option = get_option('enable-x11')
+x11_option = get_option('x11')
 if x11_option != 'no'
   if x11_dep.found()
     registryd_sources += [
index 918df67..a505222 100644 (file)
@@ -6,19 +6,19 @@
  * 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_
index 7f9a716..2c08c42 100644 (file)
@@ -6,19 +6,19 @@
  * 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>
index 901561b..e124156 100644 (file)
@@ -6,19 +6,19 @@
  * 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_
index d8b5dc5..be01d2c 100644 (file)
@@ -6,19 +6,19 @@
  * 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>
index cbf0c1b..8d35f8e 100644 (file)
@@ -7,19 +7,19 @@
  * 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>
index 16dd0d9..19b1a8f 100644 (file)
@@ -6,19 +6,19 @@
  * 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_
index 9240882..7015466 100644 (file)
@@ -14,6 +14,8 @@
 
   <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)"/>
index 320ee5e..313131e 100644 (file)
     <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>