[gtk/ebassi/for-master: 4/6] a11y: Add getters for GtkAtSpiContext




commit bc4f71a107e66d7d2efe5f64589d0a655ace71ce
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Mon Nov 16 15:21:58 2020 +0000

    a11y: Add getters for GtkAtSpiContext
    
    We are going to use them in order to implement atspi.Cache.

 gtk/a11y/gtkatspicontext.c        | 36 ++++++++++++++++++++++++++++++++++++
 gtk/a11y/gtkatspicontextprivate.h | 13 +++++++++++++
 gtk/a11y/gtkatspiprivate.h        |  4 ++++
 3 files changed, 53 insertions(+)
---
diff --git a/gtk/a11y/gtkatspicontext.c b/gtk/a11y/gtkatspicontext.c
index 735b661945..28753f9f98 100644
--- a/gtk/a11y/gtkatspicontext.c
+++ b/gtk/a11y/gtkatspicontext.c
@@ -1798,6 +1798,42 @@ gtk_at_spi_context_to_ref (GtkAtSpiContext *self)
 
   return g_variant_new ("(so)", name, self->context_path);
 }
+
+GVariant *
+gtk_at_spi_context_get_interfaces (GtkAtSpiContext *self)
+{
+  g_return_val_if_fail (GTK_IS_AT_SPI_CONTEXT (self), NULL);
+
+  return self->interfaces;
+}
+
+GVariant *
+gtk_at_spi_context_get_states (GtkAtSpiContext *self)
+{
+  GVariantBuilder builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE ("au"));
+
+  collect_states (self, &builder);
+
+  return g_variant_builder_end (&builder);
+}
+
+GVariant *
+gtk_at_spi_context_get_parent_ref (GtkAtSpiContext *self)
+{
+  g_return_val_if_fail (GTK_IS_AT_SPI_CONTEXT (self), NULL);
+
+  GtkAccessible *accessible = gtk_at_context_get_accessible (GTK_AT_CONTEXT (self));
+
+  return get_parent_context_ref (accessible);
+}
+
+GtkAtSpiRoot *
+gtk_at_spi_context_get_root (GtkAtSpiContext *self)
+{
+  g_return_val_if_fail (GTK_IS_AT_SPI_CONTEXT (self), NULL);
+
+  return self->root;
+}
 /* }}} */
 
 /* vim:set foldmethod=marker expandtab: */
diff --git a/gtk/a11y/gtkatspicontextprivate.h b/gtk/a11y/gtkatspicontextprivate.h
index b0cd407579..0c95b8af07 100644
--- a/gtk/a11y/gtkatspicontextprivate.h
+++ b/gtk/a11y/gtkatspicontextprivate.h
@@ -21,6 +21,7 @@
 #pragma once
 
 #include "gtkatcontextprivate.h"
+#include "gtkatspiprivate.h"
 
 G_BEGIN_DECLS
 
@@ -39,4 +40,16 @@ gtk_at_spi_context_get_context_path (GtkAtSpiContext *self);
 GVariant *
 gtk_at_spi_context_to_ref (GtkAtSpiContext *self);
 
+GtkAtSpiRoot *
+gtk_at_spi_context_get_root (GtkAtSpiContext *self);
+
+GVariant *
+gtk_at_spi_context_get_parent_ref (GtkAtSpiContext *self);
+
+GVariant *
+gtk_at_spi_context_get_interfaces (GtkAtSpiContext *self);
+
+GVariant *
+gtk_at_spi_context_get_states (GtkAtSpiContext *self);
+
 G_END_DECLS
diff --git a/gtk/a11y/gtkatspiprivate.h b/gtk/a11y/gtkatspiprivate.h
index ee3c51c4f6..1202885475 100644
--- a/gtk/a11y/gtkatspiprivate.h
+++ b/gtk/a11y/gtkatspiprivate.h
@@ -273,4 +273,8 @@ typedef enum {
   ATSPI_SCROLL_ANYWHERE
 } AtspiScrollType;
 
+typedef struct _GtkAtSpiRoot    GtkAtSpiRoot;
+typedef struct _GtkAtSpiCache   GtkAtSpiCache;
+typedef struct _GtkAtSpiContext GtkAtSpiContext;
+
 G_END_DECLS


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