1. 22 May, 2021 1 commit
  2. 23 Apr, 2021 1 commit
  3. 20 Apr, 2021 1 commit
    • Matthias Clasen's avatar
      a11y: Make things appear on focus in · 5f2c08ce
      Matthias Clasen authored
      We are starting with a pretty empty a11y object tree,
      and we want orca to bring more of it into existence
      by navigating the tree. But that only happens when we
      send it events. Primarily focus events, which come in
      from GTK via the platform_change mechanism. So realize
      the context when we are sending platform_changes,
      otherwise, orca never gets the mesage.
  4. 19 Mar, 2021 1 commit
  5. 11 Mar, 2021 1 commit
  6. 05 Jan, 2021 1 commit
  7. 12 Nov, 2020 1 commit
  8. 11 Nov, 2020 2 commits
    • Emmanuele Bassi's avatar
      a11y: Rework ownership and lifetime of GtkATContext · 9052f6da
      Emmanuele Bassi authored
      Now that GtkATContext is explicitly realized and unrealized, we should
      always create an instance at widget initialization time, and drop it
      during the widget finalization. This should make it easier to set up the
      initial accessible state of a widget during the instance initialization,
      as well as reduce the chances of accidental creation of GtkATContext
      instances during the destruction sequence.
    • Emmanuele Bassi's avatar
      a11y: Skip unlabelled structural roles · 04c4d293
      Emmanuele Bassi authored
      If a structural role is left unlabelled, just leave it unnamed.
  9. 10 Nov, 2020 1 commit
    • Emmanuele Bassi's avatar
      a11y: Add private API to clone a GtkATContext · 7ed06480
      Emmanuele Bassi authored
      Some widgets might want to override GtkAccessible and create their own
      context in order to control the accessible role post-construction time.
      To avoid explicitly copying the existing state over from the original
      ATContext to the new one, we need a way to clone the context's state
      from inside the ATContext itself.
  10. 09 Nov, 2020 1 commit
    • Emmanuele Bassi's avatar
      a11y: Consolidate accessibility environment variables · 0af66305
      Emmanuele Bassi authored
      Use a single environment variable for everything:
       - select the ATContext implementation
       - select the test ATContext
       - disable ATContext entirely
      We use the same pattern as GSK_RENDERER, GTK_DEBUG, etc.
      The documentation needs to be updated to include the environment
  11. 04 Nov, 2020 3 commits
  12. 21 Oct, 2020 2 commits
  13. 19 Oct, 2020 4 commits
    • Matthias Clasen's avatar
      a11y: Tweak name and description computation · dfc7d262
      Matthias Clasen authored
      Instead of falling back to the role nick for both,
      fall back to the class name for the name, and to
      the empty string for the description. This makes
      labels show up in Accerciser the same way they
      did in GTK 3, and seems more useful to me than
      the alternative.
    • Emmanuele Bassi's avatar
      a11y: Rework accessible name/description computation · 7c7dabae
      Emmanuele Bassi authored
      The ARIA spec determines the name and description of accessible elements
      in a more complex way that simply mapping to a single property; instead,
      it will chain up multiple definitions (if it finds them). For instance,
      let's assume we have a button that saves a file selected from a file
      selection widget; the widgets have the following attributes:
       - the file selection widget has a "label" attribute set to the
         selected file, e.g. "Final paper.pdf"
       - the "download" button has a "label" attribute set to the
         "Download" string
       - the "download" button has a "labelled-by" attribute set to
         reference the file selection widget
      The ARIA spec says that the accessible name of the "Download" button
      should be computed as "Download Final paper.pdf".
      The algorithm defined in section 4.3 of the WAI-ARIA specification
      applies to both accessible names (using the "label" and "labelled-by"
      attributes), and to accessible descriptions (using the "description" and
      "described-by" attributes).
    • Matthias Clasen's avatar
      a11y: Add bounds change api · d50ebd94
      Matthias Clasen authored
      Add a way for GTK to pass bounds change information
      to the AT context.
    • Matthias Clasen's avatar
      a11y: Add a separate vfunc for platform changes · 3ad03b17
      Matthias Clasen authored
      The state_change vfunc is becoming unwieldy. Lets move
      the platform changes to their own vfunc, as a start.
  14. 13 Oct, 2020 1 commit
    • Matthias Clasen's avatar
      Remove excessively spammy debug messages · caeea0e3
      Matthias Clasen authored
      Non need to announce the same things for every context
      we create, and the path is not really that interesting.
      without knowing what it belongs to. I would suggest to
      make it visible in the inspector instead, so you can
      look it up for the widgets you are interested in.
  15. 12 Oct, 2020 5 commits
    • Matthias Clasen's avatar
      a11y: Pass on platform changes · b5ee73d2
      Matthias Clasen authored
      Add an enum for 'platform changes' to the at context
      change notification mechanism. This will let us pass
      along things that ARIA considers 'platform state' such
      as focus or editability. The difference between the
      platform state and other ARIA states is that we don't
      keep the platform state separately in the at context
      - backends are expected to just query the widgets.
      This is just about avoiding notify listeners for
      change notification.
    • Matthias Clasen's avatar
      atcontext: labelled-by has a reference list · 824ab7e4
      Matthias Clasen authored
      This is unclear - our docs state that all the
      relations have value type reference, but in fact
      they all have value type reference list.
    • Emmanuele Bassi's avatar
      a11y: Compute the label for a GtkATContext · 21482e82
      Emmanuele Bassi authored
      The ARIA spec defines the mechanism for determining the name of an
      accessible element—see §4.3 of the WAI-ARIA spec.
      We follow the specification as much as it makes sense for GTK to do
       1. if the element is hidden, return an empty string
       1. if the element has a labelled-by relation set, retrieve the
          label of the related element
       2. if the element has a label property set, use the value of
          the property
       3. if neither labelled-by nor label attributes are set, we use
          the role to compute the name:
         - for a `range` role, we return the contents of the value of
           the `value-text` or `value-now` properties
         - for any other role, we return a textual representation of
           the GtkAccessibleRole enumeration value
    • Emmanuele Bassi's avatar
      a11y: Add a display to GtkATContext · 8c184800
      Emmanuele Bassi authored
      Since we need to check at run time what kind of AT context to use, we
      need a hook into the whole GDK backend machinery. The display connection
      seems to be the best choice, in this case, as it allows us to determine
      whether we're running on an X11 or Wayland system, and thus whether we
      should create a GtkAtSpiContext.
      This requires some surgery to fix the GtkATContext creation function, in
      order to include a GdkDisplay instance.
    • Emmanuele Bassi's avatar
      a11y: Add dummy AT-SPI context · 8f19bb08
      Emmanuele Bassi authored
      Does not do anything, at the moment, but it's going to get filled out
      The backend is selected depending on the platform being compiled in;
      since we're using AT-SPI on X11 and Wayland, and we don't have other
      accessibility implementations, we currently don't care about run time
      selection, but we're going to have to deal with that.
  16. 28 Aug, 2020 3 commits
  17. 25 Aug, 2020 3 commits
  18. 05 Aug, 2020 1 commit
  19. 30 Jul, 2020 1 commit
  20. 29 Jul, 2020 1 commit
  21. 28 Jul, 2020 1 commit
  22. 27 Jul, 2020 1 commit
  23. 26 Jul, 2020 3 commits
    • Emmanuele Bassi's avatar
      a11y: Add API to retrieve accessible values · b9a1cb74
      Emmanuele Bassi authored
      We are going to use this for implementing ATContext subclasses, but also
      in the testing API.
    • Emmanuele Bassi's avatar
      a11y: Change default accessible role · 03b773f4
      Emmanuele Bassi authored
      Only GtkWidget should use GTK_ACCESSIBLE_ROLE_WIDGET as its default
      accessible role; the default for GtkAccessible and GtkATContext should
      be GTK_ACCESSIBLE_ROLE_NONE, meaning "an element whose implicit native
      role semantics will not be mapped to the accessibility API", according
      to the WAI-ARIA specification.
    • Emmanuele Bassi's avatar
      a11y: Add testing API · 0d87f8cd
      Emmanuele Bassi authored
      We want to test the accessibility API, as well as the implementation
      inside each widget. For that, we should expose an API that lets us
      verify that a GtkAccessible has a given role, as well as a given
      The API follows the pattern of other GTest API:
       - a macro to assert that a condition is respected
       - a function that prints out the error message in case of failure