[gnome-builder] messages: use signal group for signal
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] messages: use signal group for signal
- Date: Tue, 9 Jan 2018 23:42:27 +0000 (UTC)
commit 287919935a3338ccf101cffae6485b0554db8951
Author: Christian Hergert <chergert redhat com>
Date: Tue Jan 9 15:42:00 2018 -0800
messages: use signal group for signal
This just helps protect against multiple calls to set the context or a
NULL value for the context.
src/plugins/messages/gbp-messages-panel.c | 32 ++++++++++++++++++++++------
1 files changed, 25 insertions(+), 7 deletions(-)
---
diff --git a/src/plugins/messages/gbp-messages-panel.c b/src/plugins/messages/gbp-messages-panel.c
index fbfa7fa..49c9454 100644
--- a/src/plugins/messages/gbp-messages-panel.c
+++ b/src/plugins/messages/gbp-messages-panel.c
@@ -26,6 +26,8 @@ struct _GbpMessagesPanel
{
DzlDockWidget parent_instance;
+ DzlSignalGroup *signals;
+
GtkScrollbar *scrollbar;
IdeTerminal *terminal;
};
@@ -65,16 +67,22 @@ gbp_messages_panel_set_context (GtkWidget *widget,
g_assert (GBP_IS_MESSAGES_PANEL (self));
g_assert (!context || IDE_IS_CONTEXT (context));
+ dzl_signal_group_set_target (self->signals, context);
+
#if 0
- g_timeout_add (1000, do_log, context);
+ if (context != NULL)
+ g_timeout_add (1000, do_log, context);
#endif
+}
- if (context != NULL)
- g_signal_connect_object (context,
- "log",
- G_CALLBACK (gbp_messages_panel_log_cb),
- self,
- G_CONNECT_SWAPPED);
+static void
+gbp_messages_panel_destroy (GtkWidget *widget)
+{
+ GbpMessagesPanel *self = (GbpMessagesPanel *)widget;
+
+ g_clear_object (&self->signals);
+
+ GTK_WIDGET_CLASS (gbp_messages_panel_parent_class)->destroy (widget);
}
static void
@@ -82,6 +90,8 @@ gbp_messages_panel_class_init (GbpMessagesPanelClass *klass)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ widget_class->destroy = gbp_messages_panel_destroy;
+
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/builder/plugins/messages-plugin/gbp-messages-panel.ui");
gtk_widget_class_bind_template_child (widget_class, GbpMessagesPanel, scrollbar);
@@ -99,4 +109,12 @@ gbp_messages_panel_init (GbpMessagesPanel *self)
vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (self->terminal));
gtk_range_set_adjustment (GTK_RANGE (self->scrollbar), vadj);
+
+ self->signals = dzl_signal_group_new (IDE_TYPE_CONTEXT);
+
+ dzl_signal_group_connect_object (self->signals,
+ "log",
+ G_CALLBACK (gbp_messages_panel_log_cb),
+ self,
+ G_CONNECT_SWAPPED);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]