gint last_visible_widget_height;
GtkStackTransitionType active_transition_type;
+
+ gboolean destroying;
} GtkStackPrivate;
static GParamSpec *stack_props[LAST_PROP] = { NULL, };
gint height,
gint *minimum_width,
gint *natural_width);
+static void gtk_stack_destroy (GtkWidget *widget);
static void gtk_stack_finalize (GObject *obj);
static void gtk_stack_get_property (GObject *object,
guint property_id,
widget_class->get_preferred_width = gtk_stack_get_preferred_width;
widget_class->get_preferred_width_for_height = gtk_stack_get_preferred_width_for_height;
widget_class->compute_expand = gtk_stack_compute_expand;
+ widget_class->destroy = gtk_stack_destroy;
container_class->add = gtk_stack_add;
container_class->remove = gtk_stack_remove;
GtkWidget *focus;
gboolean contains_focus = FALSE;
+ /* if we are being destroyed, do not bother with transitions
+ * and notifications */
+ if (priv->destroying)
+ return;
+
/* If none, pick first visible */
if (child_info == NULL)
{
*vexpand_p = vexpand;
}
+static void
+gtk_stack_destroy (GtkWidget *widget)
+{
+ GtkStack *stack = GTK_STACK (widget);
+ GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
+
+ priv->destroying = TRUE;
+
+ GTK_WIDGET_CLASS (gtk_stack_parent_class)->destroy (widget);
+}
+
static void
gtk_stack_draw_crossfade (GtkWidget *widget,
cairo_t *cr)