[gtk/a11y/atspi] accessible: Add a way to hide accessibles



commit d9adc1b5aaf3399cad9adfabd1a5dbc6803dbbcd
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Oct 12 16:22:52 2020 -0400

    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 <glib/gi18n-lib.h>
 
@@ -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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]