Matthias Clasen [Tue, 20 Jun 2023 02:10:45 +0000 (22:10 -0400)]
gtk-demo: Some a11y improvements
Add missing labels to the applauncher demo
and the clocks demo.
Matthias Clasen [Tue, 20 Jun 2023 01:50:45 +0000 (21:50 -0400)]
listitemwidget: Clean up in teardown
Matthias Clasen [Tue, 20 Jun 2023 01:06:50 +0000 (21:06 -0400)]
gtk-demo: Improve a11y for applauncher
Use the new listitem properties to make
orca read the selected item in the applauncher
demo.
Matthias Clasen [Tue, 20 Jun 2023 01:05:51 +0000 (21:05 -0400)]
listitem: Add accessible-label and -description
Add properties to GtkListItem to set the accessible
label and description of the listitem widget. This
is important, since orca will read these if the
listitem widget ends up with the focus.
Matthias Clasen [Mon, 19 Jun 2023 21:06:13 +0000 (21:06 +0000)]
Merge branch 'a11y-defeat' into 'main'
Give up on warning ATs into submission
See merge request GNOME/gtk!6121
Matthias Clasen [Mon, 19 Jun 2023 20:52:15 +0000 (20:52 +0000)]
Merge branch 'fix-issue-5899' into 'main'
GtkFileChooserWidget: Fix condition on visit action
Closes #5899
See merge request GNOME/gtk!6103
Matthias Clasen [Mon, 19 Jun 2023 20:41:39 +0000 (16:41 -0400)]
a11y: Remove the unrealized warning
This warning triggers quite a lot when opening
a window while orca is running, which clearly
shows that what it warns about happens in
practice. But fixing it is reentry hell, and
not a battle I'm up for today.
Matthias Clasen [Mon, 19 Jun 2023 20:41:20 +0000 (16:41 -0400)]
Give up on warning ATs into submission
Its been more than a decade since Wayland
has not supported screen coordinates. Clearly
spamming every apps stderr with warnings is
never going to make ATs stop asking for screen
coordinates.
Just give up. Go home
Benjamin Otte [Mon, 19 Jun 2023 20:26:18 +0000 (20:26 +0000)]
Merge branch 'unaligned-access' into 'main'
gtk: Align key_size up to key_align
Closes #5907
See merge request GNOME/gtk!6120
Matt Turner [Mon, 19 Jun 2023 19:50:04 +0000 (15:50 -0400)]
gtk: Align key_size up to key_align
Avoids unaligned accesses when e.g. the key_size is 12 and key_align is
8. We need to round the key size up to 16 to ensure that all keys are
appropriately aligned.
This manifested as a failure in the `gtk:gtk / sorter` unit test on
sparc.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5907
Matt Turner [Mon, 19 Jun 2023 19:47:17 +0000 (15:47 -0400)]
gtk: Pass G_ALIGNOF (...) to gtk_sort_keys_new
The sizeof and G_ALIGNOF are often, but not always, identical.
Daniel Boles [Mon, 19 Jun 2023 19:28:01 +0000 (20:28 +0100)]
Widget: Also mention get_height in get_alloc depʼn
The deprecation notice seems to have been copied from
get_allocated_width(), but for get_allocation() height is also relevant.
Matthias Clasen [Mon, 19 Jun 2023 17:49:22 +0000 (17:49 +0000)]
Merge branch 'redo-a11y-name-computation' into 'main'
Reimplement a11y name computation
See merge request GNOME/gtk!6119
Matthias Clasen [Mon, 19 Jun 2023 15:25:09 +0000 (11:25 -0400)]
Add more name computation tests
Test the fallback for range values.
This was not working at all before
the previous commit.
Matthias Clasen [Mon, 19 Jun 2023 15:42:10 +0000 (11:42 -0400)]
a11y: Fix name computation for ranges
There were two problems here:
First, the code was checking for the abstract
range role, instead of its subclasses.
Second, the code was calling a string value
getter on a number value. Oops.
Matthias Clasen [Mon, 19 Jun 2023 03:05:21 +0000 (23:05 -0400)]
Add tests for accessible name computation
Matthias Clasen [Mon, 19 Jun 2023 14:45:59 +0000 (10:45 -0400)]
a11y: Quietly allow realizing unrooted at context
We can't set the display if we don't have a root,
but the default display is more than good enough
for the tests which otherwise would need to do
quite a bit more setup work to make their test
widgets rooted.
Matthias Clasen [Mon, 19 Jun 2023 15:47:59 +0000 (11:47 -0400)]
a11y: Only allow get_name/description when realized
These functions rely on self->accessible_role
being set, and that is only the case for realized
contexts.
In practice, this is not a problem. Contexts are
realized before ATs can get their names or descriptions,
and the inspector realizes contexts too, nowadays.
The only place where this caused a hickup is the
testsuite.
Matthias Clasen [Sun, 18 Jun 2023 22:57:02 +0000 (18:57 -0400)]
label: Stop overriding accessible label
There's no need to, the accessible name computation
picks the content up where it is allowed (and not
overridden by explicit attributes).
Matthias Clasen [Sun, 18 Jun 2023 22:56:14 +0000 (18:56 -0400)]
a11y: Reimplement name computation
Reimplement the name computation to follow the spec
(https://www.w3.org/TR/accname-1.2) more closely.
Also, unify the functions for name and description,
since their only difference is which property/relation
they use.
Matthias Clasen [Mon, 19 Jun 2023 14:09:17 +0000 (10:09 -0400)]
a11y: Cosmetics
No need to have two code paths doing the same.
Matthias Clasen [Mon, 19 Jun 2023 16:21:31 +0000 (16:21 +0000)]
Merge branch 'a11y-inspector-tweaks' into 'main'
Move the a11y naming data into gtk proper
See merge request GNOME/gtk!6118
Matthias Clasen [Sun, 18 Jun 2023 20:43:58 +0000 (16:43 -0400)]
a11y: Move naming data to gtkatcontext.c
This is in preparation for using this information
in the name computation.
Matthias Clasen [Sun, 18 Jun 2023 19:28:58 +0000 (15:28 -0400)]
inspector: Tweak the a11y overlay
Shorten the warnings, and lower some of the
errors to 'not recommended' (where the authoring
guidelines say 'do not label', but aria doesn't
prohibit labels outright).
Matthias Clasen [Sun, 18 Jun 2023 19:28:22 +0000 (15:28 -0400)]
a11y: Update the name-prohibited list
ARIA has the time role in this as well.
It does not matter in practice since we don't
have a widget with this role, but lets match
the specs.
Matthias Clasen [Sun, 18 Jun 2023 19:15:54 +0000 (15:15 -0400)]
a11y: Cover the printer option widget case too
This is another case of nested control, in this
case it goes two levels deep. Since we already
have this hack, lets use it for all the cases.
This avoids some more complicated workaround.
Matthias Clasen [Mon, 19 Jun 2023 15:14:43 +0000 (11:14 -0400)]
docs: Add guidance on container roles
Provide some guidance on whether group or generic
is a more suitable role for containers.
Matthias Clasen [Sat, 17 Jun 2023 21:12:37 +0000 (17:12 -0400)]
a11y: Change the role for many containers
The group role that we've used before has some
implications of semantic grouping, whereas these
containers are mainly about layout, so use the
generic role instead.
This should not affect the translation to AT-SPI
at all.
The affected containers are: box, grid, centerbox,
scrolledwindow, viewport, windowhandle, aspectframe.
The role of GtkTreeExpander has been changed to
button instead, since it acts as a button.
Matthias Clasen [Mon, 19 Jun 2023 02:14:19 +0000 (22:14 -0400)]
a11y: Treat none and presentation the same
ARIA says these roles are aliases, so treat them
the same.
Benjamin Otte [Mon, 19 Jun 2023 14:30:50 +0000 (14:30 +0000)]
Merge branch 'wip/otte/for-vulkan' into 'main'
vulkan: Add support for different image formats
See merge request GNOME/gtk!6117
Benjamin Otte [Mon, 19 Jun 2023 12:54:00 +0000 (14:54 +0200)]
vulkan: Check for descriptor indexing extension
By checking if the extension is supported and avoiding devices when it
isn't, we avoid critical warnings later.
Benjamin Otte [Mon, 19 Jun 2023 12:48:37 +0000 (14:48 +0200)]
vulkan: Refactor function
Instead of checking for one specific extension, instead pass the
extension to check for by name.
This way we can reuse it for different extensions.
Benjamin Otte [Sun, 18 Jun 2023 12:00:39 +0000 (14:00 +0200)]
vulkan: Add support for high bit depth
Benjamin Otte [Sat, 17 Jun 2023 17:15:05 +0000 (19:15 +0200)]
vulkan: Don't create unnecessary render passes
Pass the render pass to the pipeline creation function instead of
creating an extra one just for pipeline creation.
Benjamin Otte [Sat, 17 Jun 2023 16:53:33 +0000 (18:53 +0200)]
vulkan: Put the framebuffer in the renderpass
... instead of having fancy caching.
That caching is complicated and it's not necessary.
Benjamin Otte [Sat, 17 Jun 2023 14:05:09 +0000 (16:05 +0200)]
vulkan: Store the VkFormat in GskVulkanImage
... and use that info when creating renderpasses.
Benjamin Otte [Thu, 15 Jun 2023 21:17:40 +0000 (23:17 +0200)]
vulkan: Pick high depth texture for high depth nodes
If a node has a higher depth, pick the RGBA format that has that depth
as the texture format we're renderig to with render_texture().
Support for adapting the swapchain is not part of this.
Benjamin Otte [Thu, 15 Jun 2023 21:13:31 +0000 (23:13 +0200)]
vulkan: Add format fallback
When a GdkMemoryFormat isn't supported, pick close formats that have a
higher chance of being supported.
Make sure this works recursively and the whole loop always ends up at
R8G8B8A8_UNORM because that one is mandatory.
Roughly, follow these rules:
1. Drop the unpremultiplied
2. Expand channels to include all of RGBA
3. pick swizzle that is RGBA
4. pick next largest depth
5. pick R8G8B8A8_UNORM
Benjamin Otte [Thu, 15 Jun 2023 12:29:15 +0000 (14:29 +0200)]
vulkan: Allow mapping images as "read" and/or "write"
This way, we unify the code paths for memory access to textures.
We also technically gain the ability to modify images, though I have no
use case for this.
Benjamin Otte [Wed, 14 Jun 2023 19:32:26 +0000 (21:32 +0200)]
vulkan: Pass format to offscreen creation function
That way, the offscreen can create images of different types.
Its not used in this commit, but will come in handy when we want to
support high bit depth.
Benjamin Otte [Wed, 14 Jun 2023 19:20:56 +0000 (21:20 +0200)]
vulkan: Remove gsk_vulkan_image_new_for_framebuffer()
Use gsk_vulkan_image_new_for_offscreen() instead, it does the same thing
pretty much.
Benjamin Otte [Wed, 14 Jun 2023 18:37:58 +0000 (20:37 +0200)]
vulkan: Allow uploading in different formats
This requires quite some code because Vulkan may not support all the
formats and then we need to detect that and fallback properly.
Benjamin Otte [Wed, 14 Jun 2023 18:36:14 +0000 (20:36 +0200)]
vulkan: Create the view in vulkan_image_new()
All callers want it created anyway.
Plus, we can consolidate things in future commits.
Benjamin Otte [Mon, 19 Jun 2023 13:03:51 +0000 (15:03 +0200)]
testsuite: Unify skipping memorytexture test
... and make it handle more cases of failure, in particular OpenGL and
Vulkan being unsupported by the system.
Emmanuele Bassi [Mon, 19 Jun 2023 12:53:10 +0000 (12:53 +0000)]
Merge branch 'more-a11y-tweaks' into 'main'
A11y improvements
See merge request GNOME/gtk!6116
Matthias Clasen [Mon, 19 Jun 2023 12:26:38 +0000 (08:26 -0400)]
docs: Expand role docs
Clarify that presentation and none
can be used interchangeably.
Matthias Clasen [Mon, 19 Jun 2023 12:23:30 +0000 (08:23 -0400)]
dropdown: Use presentation instead of none
Benjamin Otte [Wed, 14 Jun 2023 08:24:39 +0000 (10:24 +0200)]
testsuite: Add a vulkan method to memorytexure test
This uses the newly added NULL-surface renderer.
Benjamin Otte [Wed, 14 Jun 2023 08:18:47 +0000 (10:18 +0200)]
vulkan: Make gsk_renderer_realize() work with NULL surface
Pretty much copy what GL does and just use the default display to create
GPU-related resources without the need for a display.
This also adds gdk_display_create_vulkan_context() but I've
kept it private because the Vulkan API is generally considered in flux,
in particular with our pending attempts to redo how renderers work.
Benjamin Otte [Sun, 18 Jun 2023 16:38:48 +0000 (18:38 +0200)]
vulkan: Actually reset the buffer size
Fixes a bug introduced in
d1135f9e3c7.
Luckily the buffer was large enough that all my testing didn't catch it
because it took a few minutes to overflow.
Benjamin Otte [Wed, 14 Jun 2023 06:31:36 +0000 (08:31 +0200)]
vulkan: Renaming fix
This rename was a long time ago...
Matthias Clasen [Mon, 19 Jun 2023 00:59:33 +0000 (20:59 -0400)]
modelbutton: Set a11y shortcuts
Matthias Clasen [Sun, 18 Jun 2023 19:30:05 +0000 (15:30 -0400)]
printdialog: Some a11y improvements
Add proper roles and labels in some places.
Matthias Clasen [Sun, 18 Jun 2023 17:04:52 +0000 (13:04 -0400)]
printdialog: Give the page range entry a label
This is mainly to pacify the a11y checker.
Matthias Clasen [Sun, 18 Jun 2023 19:16:28 +0000 (15:16 -0400)]
notebook: Make sure tabs are labelled
Matthias Clasen [Sun, 18 Jun 2023 17:04:34 +0000 (13:04 -0400)]
windowcontrols: Cosmetics
Matthias Clasen [Sun, 18 Jun 2023 17:04:02 +0000 (13:04 -0400)]
dropdown: Avoid accessibility warnings
The image here is just presentational.
Matthias Clasen [Sun, 18 Jun 2023 17:00:06 +0000 (13:00 -0400)]
infobar: Improve a11y labelling
Treat the close button the same way we treat
the window close button, wrt. to accessibility.
Matthias Clasen [Sun, 18 Jun 2023 16:59:51 +0000 (12:59 -0400)]
gtk-demo: Miscellaneous a11y improvements
Emmanuele Bassi [Mon, 19 Jun 2023 11:46:19 +0000 (11:46 +0000)]
Merge branch 'a11y-remove-value-opt' into 'main'
a11y: Remove an overzealous optimisation
Closes #5886
See merge request GNOME/gtk!6115
Matthias Clasen [Mon, 19 Jun 2023 10:45:28 +0000 (06:45 -0400)]
a11y: Remove an overzealous optimisation
The result of calling update_property needs
to be that the property is marked as set
afterward, even if the value we pass happens
to match the default value.
After this change, scrollbars have value-now
show up as zero in the accessiblity page of
the inspector, even when that matches the lower
bound.
Test included.
Fixes: #5886
Matthias Clasen [Sun, 18 Jun 2023 15:42:06 +0000 (15:42 +0000)]
Merge branch 'a11y-nest-button-redux' into 'main'
Revert "dropdown: Shuffle accessible roles around"
See merge request GNOME/gtk!6111
Matthias Clasen [Sun, 18 Jun 2023 13:19:07 +0000 (13:19 +0000)]
Merge branch 'main' into 'main'
Revert "Use gsk_matrix_transform_point3d consistently"
Closes #5902
See merge request GNOME/gtk!6112
Benjamin Otte [Sun, 18 Jun 2023 13:14:57 +0000 (13:14 +0000)]
Merge branch 'wip/otte/for-main' into 'main'
memoryformat: Add gdk_memory_format_get_depth()
See merge request GNOME/gtk!6110
Benjamin Otte [Fri, 16 Jun 2023 06:00:19 +0000 (08:00 +0200)]
gdk: Replace prefers_high_depth with depth
Now that we track depth, we can also pass it into the GDK frame code.
For now it's just passed along, code acts the same as with
prefers_high_depth.
Benjamin Otte [Thu, 15 Jun 2023 18:27:13 +0000 (20:27 +0200)]
rendernode: Change to gsk_render_node_get_preferred_depth()
Instead of just tracking preferred_high_depth(), track the actual depth
we'd like to have.
Benjamin Otte [Thu, 15 Jun 2023 18:02:46 +0000 (20:02 +0200)]
memoryformat: Add gdk_memory_format_get_depth()
Replace gdk_memory_format_prefers_high_depth with the more generic
gdk_memory_format_get_depth() that returns the depth of the individual
channels.
Also make the GL renderer use that to pick the generic F16 format
instead of immediately going for F32 when uploading textures.
Benjamin Otte [Sat, 17 Jun 2023 20:02:38 +0000 (22:02 +0200)]
inspector: Handle a11y being disabled
Yiğit Burak [Sun, 18 Jun 2023 12:14:23 +0000 (15:14 +0300)]
Revert "Use gsk_matrix_transform_point3d consistently"
Revert commit
440d56a4
Matthias Clasen [Sun, 18 Jun 2023 12:12:31 +0000 (08:12 -0400)]
a11y: Special-case nested buttons
Special-case nested buttons in our name computation,
since it is hard to reconcile all the a11y attributes
being on the wrapper, but the focus ending up on the
button inside.
This is a pragmatic approach that works. The only
downside is that the wrapper and the button end up
with the same name+description, but at least orca
seems to only read the focus elements' ones.
Matthias Clasen [Sun, 18 Jun 2023 11:35:52 +0000 (07:35 -0400)]
Revert "colordialogbutton: Shuffle accessible roles around"
This reverts commit
343b9d246ff09e24842020e907a681984ea6d610.
Unfortunately, this makes it so that the focus ends up on
the 'generic' accessible, not the one with the label, and
orca remains quiet.
Matthias Clasen [Sun, 18 Jun 2023 11:34:50 +0000 (07:34 -0400)]
Revert "dropdown: Shuffle accessible roles around"
This reverts commit
5ec0b07bafaa0d874fb2e7e0674e46f9d8f8378d.
Unfortunately, this makes it so that the focus ends up on
the 'generic' accessible, not the one with the label, and
orca remains quiet.
Matthias Clasen [Sun, 18 Jun 2023 03:03:33 +0000 (03:03 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
testsuite: Add some more a11y tests
See merge request GNOME/gtk!6109
Matthias Clasen [Sun, 18 Jun 2023 02:38:43 +0000 (22:38 -0400)]
dropdown: Shuffle accessible roles around
Make the internal toggle button generic, so that
the a11y checker doesn't complain about it not
having a label. And mark the icons in the popup
as presentational.
Matthias Clasen [Sun, 18 Jun 2023 02:36:47 +0000 (22:36 -0400)]
colordialogbutton: Shuffle accessible roles around
Make the color button itself take the button role,
and make the internal toggle button just be generic.
This solves the problem that labelled-by relations
that are set up in ui files via mnemonics point at
the toplevel, not the toggle button.
Matthias Clasen [Sun, 18 Jun 2023 02:36:31 +0000 (22:36 -0400)]
gtk-demo: a11y improvements
Make the clipboard demo come up clean in the
a11y checker.
Matthias Clasen [Sun, 18 Jun 2023 02:00:04 +0000 (22:00 -0400)]
testsuite: Add some more a11y tests
Test that overriding roles works, both
via g_object_new, and via ui files.
Matthias Clasen [Sun, 18 Jun 2023 01:47:50 +0000 (01:47 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
gtk-demo: Fix a crash
Closes #4522
See merge request GNOME/gtk!6108
Emmanuele Bassi [Sat, 17 Jun 2023 23:44:46 +0000 (23:44 +0000)]
Apply suggestions from review
Matthias Clasen [Sat, 17 Jun 2023 23:00:14 +0000 (19:00 -0400)]
video: Make the overlay clickable
And add missing accessible labels at the same time.
Fixes: #4522
Matthias Clasen [Sat, 17 Jun 2023 23:05:48 +0000 (19:05 -0400)]
inspector: Cosmetic fixes
Align the values on the a11y page to the right.
Matthias Clasen [Sat, 17 Jun 2023 22:51:54 +0000 (18:51 -0400)]
mediacontrols: Add accessible labels
Matthias Clasen [Sat, 17 Jun 2023 21:54:39 +0000 (17:54 -0400)]
gtk-demo: Misc a11y improvements
Matthias Clasen [Sat, 17 Jun 2023 21:54:21 +0000 (17:54 -0400)]
gtk-demo: Fix a crash
This was broken in
6b2c088a29e4a819.
Matthias Clasen [Sat, 17 Jun 2023 21:20:10 +0000 (21:20 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
colordialogbutton: Sync color
See merge request GNOME/gtk!6107
Matthias Clasen [Sat, 17 Jun 2023 20:44:16 +0000 (16:44 -0400)]
inspector: Limit the width of a11y page
Ellipsize labels that can contain long
content to prevent a super-wide window.
Matthias Clasen [Sat, 17 Jun 2023 16:19:05 +0000 (12:19 -0400)]
gtk-demo: Misc a11y fixes
Add some missing labels.
Matthias Clasen [Sat, 17 Jun 2023 18:48:18 +0000 (14:48 -0400)]
inspector: Realize AT ontexts
Otherwise we don't get change notification...
Matthias Clasen [Sat, 17 Jun 2023 16:18:34 +0000 (12:18 -0400)]
a11y: Set has-popup consistently
Set the has-popup property when a widget
has a context menu.
Matthias Clasen [Sat, 17 Jun 2023 15:37:22 +0000 (11:37 -0400)]
colordialogbutton: Sync color
Make sure the color of the swatch and the button
are initially in sync. As a side-effect, this
ensures that the swatch has its accessible label
computed at the outset.
Matthias Clasen [Sat, 17 Jun 2023 15:37:11 +0000 (11:37 -0400)]
gtk-demo: Cosmetics
Matthias Clasen [Sat, 17 Jun 2023 15:44:21 +0000 (15:44 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
Don't use "Tab list" as an accessible label
Closes #4839
See merge request GNOME/gtk!6106
Luca Bacci [Sat, 17 Jun 2023 13:45:07 +0000 (15:45 +0200)]
GtkFileChooserWidget: Use GTK_INVALID_LIST_POSITION
...instead of G_MAXUINT
Luca Bacci [Sat, 17 Jun 2023 12:40:19 +0000 (14:40 +0200)]
GtkFileChooserWidget: Fix condition on visit action
Fixes #5899
Matthias Clasen [Fri, 16 Jun 2023 17:09:16 +0000 (13:09 -0400)]
Don't use "Tab list" as an accessible label
It does not add any extra information.
Fixes: #4839
Benjamin Otte [Sat, 17 Jun 2023 06:41:30 +0000 (06:41 +0000)]
Merge branch 'dropdown-sections' into 'main'
dropdown: Add section support
See merge request GNOME/gtk!6102
Matthias Clasen [Sat, 17 Jun 2023 01:12:47 +0000 (21:12 -0400)]
gtk-demo: Add an example for dropdown sections
Make one of the dropdowns in the Selections
demo have sections.
Matthias Clasen [Sat, 17 Jun 2023 01:12:11 +0000 (21:12 -0400)]
dropdown: Add section support
Add a header-factory property and pass it through
to the listview in the popup.
Matthias Clasen [Fri, 16 Jun 2023 16:38:22 +0000 (16:38 +0000)]
Merge branch 'fix-c4013' into 'main'
gtkprintoperation-win32.c: Fix build
See merge request GNOME/gtk!6099
Matthias Clasen [Fri, 16 Jun 2023 16:30:51 +0000 (16:30 +0000)]
Merge branch 'a11y-computed-name' into 'main'
atcontext: Update name computation
See merge request GNOME/gtk!6088