[libadwaita/wip/chergert/split-button-fix-critical] split-button: avoid state changes during dispose
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libadwaita/wip/chergert/split-button-fix-critical] split-button: avoid state changes during dispose
- Date: Wed, 30 Mar 2022 07:55:01 +0000 (UTC)
commit 0b7172a987e06aa0c0d20b63766e92f020020676
Author: Christian Hergert <chergert redhat com>
Date: Wed Mar 30 00:54:19 2022 -0700
split-button: avoid state changes during dispose
This avoids a critical that can fire when disposing and accessing widgets
that are being destroyed resulting in action muxer updates.
src/adw-split-button.c | 7 +++++++
1 file changed, 7 insertions(+)
---
diff --git a/src/adw-split-button.c b/src/adw-split-button.c
index 4aad04e4..0cfdd47b 100644
--- a/src/adw-split-button.c
+++ b/src/adw-split-button.c
@@ -88,6 +88,8 @@ struct _AdwSplitButton
GtkWidget *menu_button;
GtkWidget *arrow_button;
GtkWidget *separator;
+
+ guint disposed : 1;
};
static void adw_split_button_actionable_init (GtkActionableInterface *iface);
@@ -105,6 +107,9 @@ update_state (AdwSplitButton *self)
GtkStateFlags flags;
gboolean keyboard_activating;
+ if (self->disposed)
+ return;
+
flags = gtk_widget_get_state_flags (self->button) |
gtk_widget_get_state_flags (self->arrow_button);
@@ -246,6 +251,8 @@ adw_split_button_dispose (GObject *object)
{
AdwSplitButton *self = ADW_SPLIT_BUTTON (object);
+ self->disposed = TRUE;
+
g_clear_pointer (&self->button, gtk_widget_unparent);
g_clear_pointer (&self->menu_button, gtk_widget_unparent);
g_clear_pointer (&self->separator, gtk_widget_unparent);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]