[gnome-builder] terminal: defer gtk_widget_destroy() to idle callback
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] terminal: defer gtk_widget_destroy() to idle callback
- Date: Thu, 2 May 2019 18:39:55 +0000 (UTC)
commit 241b3436e9150d4d8c923591068694ba655e989e
Author: Christian Hergert <chergert redhat com>
Date: Thu May 2 11:39:42 2019 -0700
terminal: defer gtk_widget_destroy() to idle callback
We want to avoid calling this here because we still need to possibly
dispatch key-release-events or other state changes.
src/libide/terminal/ide-terminal-page.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
---
diff --git a/src/libide/terminal/ide-terminal-page.c b/src/libide/terminal/ide-terminal-page.c
index f1b783a38..2cf0e9581 100644
--- a/src/libide/terminal/ide-terminal-page.c
+++ b/src/libide/terminal/ide-terminal-page.c
@@ -70,6 +70,14 @@ terminal_has_notification_signal (void)
FALSE);
}
+static gboolean
+destroy_widget_in_idle (GtkWidget *widget)
+{
+ g_assert (GTK_IS_WIDGET (widget));
+ gtk_widget_destroy (widget);
+ return G_SOURCE_REMOVE;
+}
+
static void
ide_terminal_page_spawn_cb (GObject *object,
GAsyncResult *result,
@@ -106,7 +114,10 @@ ide_terminal_page_spawn_cb (GObject *object,
if (!self->respawn_on_exit)
{
if (self->close_on_exit)
- gtk_widget_destroy (GTK_WIDGET (self));
+ gdk_threads_add_idle_full (G_PRIORITY_DEFAULT,
+ (GSourceFunc) destroy_widget_in_idle,
+ g_object_ref (self),
+ g_object_unref);
return;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]