diff options
author | Matthias Clasen <mclasen@redhat.com> | 2010-11-27 20:56:09 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2010-11-27 20:56:09 -0500 |
commit | 289ad41bd105758110cc1861d623138aa77ec974 (patch) | |
tree | 8eeebfedd510424611c99106a00e26d1c80a811e /gtk | |
parent | ec78fb182118c11ab35e56387c53c782feffbb3f (diff) | |
download | gtk+-289ad41bd105758110cc1861d623138aa77ec974.tar.gz |
Fix recursion in the GtkIconView accessible initialization
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=634474
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkiconview.c | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c index c080bba048..8a3defdb80 100644 --- a/gtk/gtkiconview.c +++ b/gtk/gtkiconview.c @@ -317,7 +317,7 @@ static void gtk_icon_view_set_hadjustment (GtkIco GtkAdjustment *adjustment); static void gtk_icon_view_set_vadjustment (GtkIconView *icon_view, GtkAdjustment *adjustment); -static void gtk_icon_view_accessible_set_adjustment (GtkIconView *icon_view, +static void gtk_icon_view_accessible_set_adjustment (AtkObject *accessible, GtkOrientation orientation, GtkAdjustment *adjustment); static void gtk_icon_view_adjustment_changed (GtkAdjustment *adjustment, @@ -2707,6 +2707,7 @@ gtk_icon_view_set_hadjustment (GtkIconView *icon_view, GtkAdjustment *adjustment) { GtkIconViewPrivate *priv = icon_view->priv; + AtkObject *atk_obj; if (adjustment && priv->hadjustment == adjustment) return; @@ -2728,9 +2729,10 @@ gtk_icon_view_set_hadjustment (GtkIconView *icon_view, priv->hadjustment = g_object_ref_sink (adjustment); gtk_icon_view_set_hadjustment_values (icon_view); - gtk_icon_view_accessible_set_adjustment (icon_view, + atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view)); + gtk_icon_view_accessible_set_adjustment (atk_obj, GTK_ORIENTATION_HORIZONTAL, - priv->hadjustment); + adjustment); g_object_notify (G_OBJECT (icon_view), "hadjustment"); } @@ -2740,6 +2742,7 @@ gtk_icon_view_set_vadjustment (GtkIconView *icon_view, GtkAdjustment *adjustment) { GtkIconViewPrivate *priv = icon_view->priv; + AtkObject *atk_obj; if (adjustment && priv->vadjustment == adjustment) return; @@ -2761,9 +2764,10 @@ gtk_icon_view_set_vadjustment (GtkIconView *icon_view, priv->vadjustment = g_object_ref_sink (adjustment); gtk_icon_view_set_vadjustment_values (icon_view); - gtk_icon_view_accessible_set_adjustment (icon_view, + atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view)); + gtk_icon_view_accessible_set_adjustment (atk_obj, GTK_ORIENTATION_VERTICAL, - priv->vadjustment); + adjustment); g_object_notify (G_OBJECT (icon_view), "vadjustment"); } @@ -9207,32 +9211,21 @@ gtk_icon_view_accessible_traverse_items (GtkIconViewAccessible *view, } static void -gtk_icon_view_accessible_adjustment_changed (GtkAdjustment *adjustment, - GtkIconView *icon_view) +gtk_icon_view_accessible_adjustment_changed (GtkAdjustment *adjustment, + GtkIconViewAccessible *view) { - AtkObject *obj; - GtkIconViewAccessible *view; - - /* - * The scrollbars have changed - */ - obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view)); - view = GTK_ICON_VIEW_ACCESSIBLE (obj); - gtk_icon_view_accessible_traverse_items (view, NULL); } static void -gtk_icon_view_accessible_set_adjustment (GtkIconView *icon_view, +gtk_icon_view_accessible_set_adjustment (AtkObject *accessible, GtkOrientation orientation, GtkAdjustment *adjustment) { - AtkObject *atk_obj; GtkIconViewAccessiblePrivate *priv; GtkAdjustment **old_adj_ptr; - atk_obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view)); - priv = gtk_icon_view_accessible_get_priv (atk_obj); + priv = gtk_icon_view_accessible_get_priv (accessible); /* Adjustments are set for the first time in constructor and priv is not * initialized at that time, so skip this first setting. */ @@ -9261,7 +9254,7 @@ gtk_icon_view_accessible_set_adjustment (GtkIconView *icon_view, (gpointer *)&priv->old_hadj); g_signal_handlers_disconnect_by_func (*old_adj_ptr, gtk_icon_view_accessible_adjustment_changed, - icon_view); + accessible); } /* Connect signal */ @@ -9269,7 +9262,7 @@ gtk_icon_view_accessible_set_adjustment (GtkIconView *icon_view, g_object_add_weak_pointer (G_OBJECT (adjustment), (gpointer *)old_adj_ptr); g_signal_connect (adjustment, "value-changed", G_CALLBACK (gtk_icon_view_accessible_adjustment_changed), - icon_view); + accessible); } static void @@ -9572,11 +9565,11 @@ gtk_icon_view_accessible_initialize (AtkObject *accessible, icon_view = GTK_ICON_VIEW (data); if (icon_view->priv->hadjustment) - gtk_icon_view_accessible_set_adjustment (icon_view, + gtk_icon_view_accessible_set_adjustment (accessible, GTK_ORIENTATION_HORIZONTAL, icon_view->priv->hadjustment); if (icon_view->priv->vadjustment) - gtk_icon_view_accessible_set_adjustment (icon_view, + gtk_icon_view_accessible_set_adjustment (accessible, GTK_ORIENTATION_VERTICAL, icon_view->priv->vadjustment); g_signal_connect (data, @@ -9623,7 +9616,7 @@ gtk_icon_view_accessible_destroyed (GtkWidget *widget, g_signal_handlers_disconnect_by_func (priv->old_hadj, (gpointer) gtk_icon_view_accessible_adjustment_changed, - widget); + accessible); priv->old_hadj = NULL; } if (priv->old_vadj) @@ -9633,7 +9626,7 @@ gtk_icon_view_accessible_destroyed (GtkWidget *widget, g_signal_handlers_disconnect_by_func (priv->old_vadj, (gpointer) gtk_icon_view_accessible_adjustment_changed, - widget); + accessible); priv->old_vadj = NULL; } } |