This commit adds another way how to disable the a11y manager ACL in development.
Setting the unsafe mode might not be as straightforward as setting an
environment variable for the session, and you can control it invidually too.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
Track unique DBus senders and allow only thse which own a (at least so far)
pre-defined set of well known DBus names.
Carlos Garnacho: Renamed to a more generic helper, use g_bus_watch_name().
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
Listen to changes in MetaA11yManager configured modifiers, and propagate
these along to the MetaSeatNative. This lets the backend keep track of
configuration changes in a11y modifiers.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
The ::a11y-modifiers-change method allows tracking for changes in the
configured modifiers, add this method to allow backends to get the
modifiers so that they can be passed along the lower layers.
Carlos Garnacho: Turn into a method instead of a signal argument, turn
into an array+length instead of a hashtable.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
Implement the org.freedesktop.a11y.KeyboardMonitor interface,
allowing screen readers to interact with Mutter and grab
shortcuts or full keyboard interaction.
Carlos Garnacho: Move setup to ::constructed.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
This a11y manager will handle key event emission to screen
readers and other ATs. This initial commit only introduces
the object.
Carlos Garnacho: Make the object take a ::backend property
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
These modifiers will be set by the backend from the main thread, and
need to be handled specially for them to be usable as both modifier
buttons, and their own regular action.
Carlos Garnacho: pass modifiers as array+lenght instead of hashtable.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
The state handling about whether the a11y modifier is a first press (so
could be consumed for other actions), or results in the modifier action
(e.g. caps lock) is performed in the input thread. This information will
be propagated through the CLUTTER_EVENT_FLAG_A11Y_MODIFIER_FIRST_CLICK
flag in the related key events.
Carlos Garnacho: Drop synchronous wait for configuration changes
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
Use a Clutter event flag to communicate the the fact that the event
is an a11y modifier first click. The accessibility modifiers will
require special handling in the input and main threads.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
This object will for now only provide a way for assistive technologies
to receive keyboard events, however it is expected that it will be used for
the new a11y communication protocol in the future.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4217>
libinput 1.27 added a new "sticky" mode to the tap-and-drag drag lock -
the previous mode is now called the "timeout" mode.
In sticky mode the drag lock is explicitly terminated with an extra tap,
i.e. a full sequence is:
tap, down, [:move, up, wait, down:], up, tap
where the middle part can repeat and/or wait as long as required.
In the previous "timeout" mode the drag lock would automatically release
after a timeout - for users with low dexterity this timeout may be too
short.
The sticky mode is also how macos does drag lock.
Related: https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/2798
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4292>
Since we now cascade when center-new-windows is true, we need to update the
always-above window positions to account for where the new windows will end
up being placed.
Assertions are also added for the two test windows' positions.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4202>
This commit introduces a new comparator, window_distance_cmp,
which uses either the top left or top right corner of a given window, based
on LTR, as reference for the squared distance.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4202>
Both northwest_cmp and northeast_cmp didn't account for the work_area's
relative x and y coordinates which would lead to improper sorting on
multi-monitor setups.
To fix this, we pass the work_area when necessary and use it to offset the
absolute coordinates.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4202>
Remove unnecessary sqrt() calls in northwest_cmp and northeast_cmp.
The square root would have been necessary if we needed the actual distance,
but we only care about the relative order, so it isn't.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4202>
This is a preparatory commit, it refactors away of the
done_check_denied_focus label, simplifying the control flow.
The only functional difference is that now the auto-maximization when
windows don't fit the work_area is always applied.
The next commits will adapt find_next_cascade to properly handle this.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4202>
This commit only reformats place.c, starting off uncrustify's output, no
functional change is intended.
It mostly aligns comments, as well as properly space out math,
follow current formatter enforced guidelines and fix alignment on a rogue
bracket.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4202>
By default, copy mode primary tries to use the GPU to perform the copy
and, in case of error, it fallbacks to CPU.
Add a flag (unused for the moment) to allow to use the CPU to perform
the copy.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4251>