[gtk: 23/23] Merge branch 'matthiasc/atspi-child' into 'master'




commit 8df883ed717a301435ad28ebc400fa595837bc77
Merge: 0c49f7349d adb7676fc1
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Oct 27 18:24:43 2020 +0000

    Merge branch 'matthiasc/atspi-child' into 'master'
    
    Emit ChildrenChanged signal on hierarchy updates
    
    See merge request GNOME/gtk!2752

 gtk/a11y/gtkatspicontext.c      | 180 +++++++++++++++++++++++++++++++++++++---
 gtk/a11y/gtkatspiroot.c         |  60 +++++++++++++-
 gtk/a11y/gtkatspirootprivate.h  |   5 ++
 gtk/a11y/gtkatspiutils.c        |  34 ++++++++
 gtk/a11y/gtkatspiutilsprivate.h |   8 ++
 gtk/gtkaccessible.c             |  36 ++++++++
 gtk/gtkaccessibleprivate.h      |   4 +
 gtk/gtkatcontext.c              |  16 ++++
 gtk/gtkatcontextprivate.h       |  17 ++++
 gtk/gtkstack.c                  |  19 ++---
 gtk/gtkwidget.c                 |   9 ++
 gtk/gtkwindow.c                 |  12 ++-
 12 files changed, 376 insertions(+), 24 deletions(-)
---
diff --cc gtk/gtkaccessible.c
index a98bd90ae2,12be6332a3..39c31d5b1e
--- a/gtk/gtkaccessible.c
+++ b/gtk/gtkaccessible.c
@@@ -746,9 -748,42 +748,43 @@@ gtk_accessible_should_present (GtkAcces
        !gtk_widget_get_visible (GTK_WIDGET (self)))
      return FALSE;
  
 -  if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE)
 +  if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE ||
 +      gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_PRESENTATION)
      return FALSE;
  
+   context = gtk_accessible_get_at_context (self);
+   if (gtk_at_context_has_accessible_state (context, GTK_ACCESSIBLE_STATE_HIDDEN))
+     {
+       GtkAccessibleValue *value;
+ 
+       value = gtk_at_context_get_accessible_state (context, GTK_ACCESSIBLE_STATE_HIDDEN);
+       if (gtk_boolean_accessible_value_get (value))
+         return FALSE;
+     }
+ 
    return TRUE;
  }
+ 
+ void
+ gtk_accessible_update_children (GtkAccessible           *self,
+                                 GtkAccessible           *child,
+                                 GtkAccessibleChildState  state)
+ {
+   GtkATContext *context;
+ 
+   if (GTK_IS_WIDGET (self) &&
+       gtk_widget_get_root (GTK_WIDGET (self)) == NULL)
+     return;
+ 
+   context = gtk_accessible_get_at_context (self);
+ 
+   /* propagate changes up from ignored widgets */
+   if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE)
+     context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (gtk_widget_get_parent (GTK_WIDGET (self))));
+ 
+   if (context == NULL)
+     return;
+ 
+   gtk_at_context_child_changed (context, 1 << state, child);
+   gtk_at_context_update (context);
+ }


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