From d9adc1b5aaf3399cad9adfabd1a5dbc6803dbbcd Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 12 Oct 2020 16:22:52 -0400 Subject: accessible: Add a way to hide accessibles Similar to gtk_widget_should_layout(), add a gtk_accessible_should_present() function that backends can use to determine whether an accessible should be presented or not. Ways to make a widget not presented in a11y: - hide the widget - set its role to NONE - make it have a NULL AT context We will use this in future to hide the GtkText inside an entry, since the Text implementation will be done by the wrapper. --- gtk/gtkaccessible.c | 13 +++++++++++++ gtk/gtkaccessibleprivate.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/gtk/gtkaccessible.c b/gtk/gtkaccessible.c index dd5890ca92..49186ed0ff 100644 --- a/gtk/gtkaccessible.c +++ b/gtk/gtkaccessible.c @@ -47,6 +47,7 @@ #include "gtkatcontextprivate.h" #include "gtkenums.h" #include "gtktypebuiltins.h" +#include "gtkwidget.h" #include @@ -649,3 +650,15 @@ gtk_accessible_platform_changed (GtkAccessible *self, gtk_at_context_update (context); } +gboolean +gtk_accessible_should_present (GtkAccessible *self) +{ + if (GTK_IS_WIDGET (self) && + !gtk_widget_get_visible (GTK_WIDGET (self))) + return FALSE; + + if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE) + return FALSE; + + return TRUE; +} diff --git a/gtk/gtkaccessibleprivate.h b/gtk/gtkaccessibleprivate.h index 092f9c2d9c..ae4847f39c 100644 --- a/gtk/gtkaccessibleprivate.h +++ b/gtk/gtkaccessibleprivate.h @@ -40,4 +40,6 @@ const char * gtk_accessible_role_to_name (GtkAccessibleRole role, void gtk_accessible_platform_changed (GtkAccessible *self, GtkAccessiblePlatformChange change); +gboolean gtk_accessible_should_present (GtkAccessible *self); + G_END_DECLS -- cgit v1.2.1