1. 26 Jul, 2020 18 commits
    • Emmanuele Bassi's avatar
      Add accessible properties to GtkAccessible · da1ce01a
      Emmanuele Bassi authored
      We propagate the accessible state and properties to each ATContext in
      the same virtual function, since they are functionally similar.
      da1ce01a
    • Emmanuele Bassi's avatar
      Add GtkAccessiblePropertySet · 65495622
      Emmanuele Bassi authored
      Like GtkAccessibleStateSet, the PropertySet is a set for accessible
      properties.
      65495622
    • Emmanuele Bassi's avatar
      Plumb all the GtkAccessibleProperty values into GtkAccessibleValue · 382fa013
      Emmanuele Bassi authored
      Similarly to how we deal with GtkAccessibleState.
      382fa013
    • Emmanuele Bassi's avatar
      Allow setting the accessible role at construction · 572861be
      Emmanuele Bassi authored
      Some widgets have different accessible roles depending on some
      parameter, so we cannot set the role at class init time. For those
      widgets, we add an "accessible-role" property to GtkAccessible, and we
      allow setting it (only) at construction time.
      572861be
    • Emmanuele Bassi's avatar
      Start documenting the Accessibility API · 5a173df3
      Emmanuele Bassi authored
      Add the introductory text from #2833, and the various types to the API
      reference.
      5a173df3
    • Emmanuele Bassi's avatar
      Update the accessible state on widget visibility changes · 3ea069a8
      Emmanuele Bassi authored
      The GTK_ACCESSIBLE_STATE_HIDDEN has the opposite meaning of the
      GtkWidget:visible property.
      3ea069a8
    • Emmanuele Bassi's avatar
      Have GtkWidget implement GtkAccessible · 25f6da5e
      Emmanuele Bassi authored
      Each widget type has an accessible role associated to its class, as
      roles cannot change during the life time of a widget instance.
      
      Each widget is also responsible for creating an ATContext, to proxy
      state changes to the underlying accessibility infrastructure.
      25f6da5e
    • Emmanuele Bassi's avatar
      Plug GtkATContext into GtkAccessible · 566f75af
      Emmanuele Bassi authored
      An Accessible implementation must create an ATContext object. UI
      elements are supposed to interact with the GtkAccessible API, but we
      expose GtkATContext to allow patterns like delegation.
      566f75af
    • Emmanuele Bassi's avatar
      Add GtkATContext · a382dfd3
      Emmanuele Bassi authored
      The ATContext type is meant to be used as the base class for
      implementations of the assistive technology API—the actual mechanism
      needed to communicate to components like the screen reader, or any other
      AT.
      
      Every time the widget state changes, the ATContext is meant to broadcast
      the state change; and every time the AT queries the state of a UI
      element, the ATContext is meant to provide that information.
      
      We also have a "test" ATContext implementation, which is meant to be
      used to write tests to verify that changes are propagated without
      requiring a whole desktop session.
      a382dfd3
    • Emmanuele Bassi's avatar
      Add GtkAccessibleStateSet · 823ee583
      Emmanuele Bassi authored
      Since states can be set or unset, we need a container type that has all
      the possible states, and a bitmask that tells us which ones are set.
      823ee583
    • Emmanuele Bassi's avatar
      Add GtkAccessibleValue · 55120a25
      Emmanuele Bassi authored
      All accessible properties and states may have one of the following
      types:
      
       - true/false
       - true/false/undefined
       - true/false/mixed/undefined
       - reference (to another UI element)
       - reference list
       - integer
       - number (real numerical value)
       - string
       - token (one of a limited set of allowed values)
       - token list
      
      See: https://www.w3.org/WAI/PF/aria/states_and_properties#propcharacteristic_value
      
      The GtkAccessibleValue is a simple reference counted type that can be
      "subclassed" to implement each value type.
      
      This initial commit adds GtkAccessibleValue and the basic subclasses for
      plain boolean, tristate (true/false/undefined), and token types,
      including statically allocated values that can be shared instead of
      allocated.
      55120a25
    • Emmanuele Bassi's avatar
      Introduce GtkAccessible · 14faec3c
      Emmanuele Bassi authored
      GtkAccessible is an interface for accessible UI elements.
      
      Currently, it doesn't do much except exist as a type; in the future, it
      will be the entry point for all accessible state in GTK.
      14faec3c
    • Emmanuele Bassi's avatar
      a11y: Add the supported accessibility roles · 82fe6fbc
      Emmanuele Bassi authored
      The list of roles is taken from the WAI-ARIA 1.2 specification:
      
        https://w3c.github.io/aria/
      
      Some of these roles do not make entirely sense from a GTK application
      perspective, but we can remove them before finalizing the API.
      82fe6fbc
    • Emmanuele Bassi's avatar
      Remove ATK · c63087a5
      Emmanuele Bassi authored
      To build a better world sometimes means having to tear the old one down.
              -- Alexander Pierce, "Captain America: The Winter Soldier"
      
      ATK served us well for nearly 20 years, but the world has changed, and
      GTK has changed with it. Now ATK is mostly a hindrance towards improving
      the accessibility stack:
      
       - it maps to a very specific implementation, AT-SPI, which is Linux and
         Unix specific
       - it requires implementing the same functionality in three different
         layers of the stack: AT-SPI, ATK, and GTK
       - only GTK uses it; every other Linux and Unix toolkit and application
         talks to AT-SPI directly, including assistive technologies
      
      Sadly, we cannot incrementally port GTK to a new accessibility stack;
      since ATK insulates us entirely from the underlying implementation, we
      cannot replace it piecemeal. Instead, we're going to remove everything
      and then incrementally build on a clean slate:
      
       - add an "accessible" interface, implemented by GTK objects directly,
         which describe the accessible role and state changes for every UI
         element
       - add an "assistive technology context" to proxy a native accessibility
         API, and assign it to every widget
       - implement the AT context depending on the platform
      
      For more information, see: #2833
      c63087a5
    • Benjamin Otte's avatar
      Merge branch 'wip/otte/boolfilter' into 'master' · ea0fc761
      Benjamin Otte authored
      Add GtkBoolFilter
      
      See merge request !2288
      ea0fc761
    • Jordi Mas's avatar
      Update Catalan translation · f2ed1656
      Jordi Mas authored
      f2ed1656
    • Benjamin Otte's avatar
      Add GtkBoolFilter · 2f27d292
      Benjamin Otte authored
      Takes a boolean GtkExpression (like a boolean object property) to run a
      filter with.
      2f27d292
    • Matthias Clasen's avatar
      Merge branch 'matthiasc/for-master' into 'master' · ef6babf8
      Matthias Clasen authored
      overlaylayout: Document minimally
      
      See merge request !2285
      ef6babf8
  2. 25 Jul, 2020 9 commits
  3. 24 Jul, 2020 13 commits