[gnome-builder] glade: use DzlSignalGroup for project signals
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] glade: use DzlSignalGroup for project signals
- Date: Tue, 23 Oct 2018 00:31:45 +0000 (UTC)
commit ade52eb5f4d98753a21da7fc37499949ac2c3c2f
Author: Christian Hergert <chergert redhat com>
Date: Mon Oct 22 17:31:21 2018 -0700
glade: use DzlSignalGroup for project signals
This simplifies our signal tracking, and allows us a convenient place to
start doing tracking of more GladeProject signal editing.
src/plugins/glade/gbp-glade-private.h | 3 +++
src/plugins/glade/gbp-glade-view.c | 38 ++++++++++++++++++++---------------
2 files changed, 25 insertions(+), 16 deletions(-)
---
diff --git a/src/plugins/glade/gbp-glade-private.h b/src/plugins/glade/gbp-glade-private.h
index 4408e40b7..539af0e62 100644
--- a/src/plugins/glade/gbp-glade-private.h
+++ b/src/plugins/glade/gbp-glade-private.h
@@ -31,8 +31,11 @@ G_BEGIN_DECLS
struct _GbpGladeView
{
IdeLayoutView parent_instance;
+
GFile *file;
GladeProject *project;
+ DzlSignalGroup *project_signals;
+
GladeDesignView *designer;
GladeAdaptorChooser *chooser;
GtkBox *main_box;
diff --git a/src/plugins/glade/gbp-glade-view.c b/src/plugins/glade/gbp-glade-view.c
index 2707abde5..6fb0583cb 100644
--- a/src/plugins/glade/gbp-glade-view.c
+++ b/src/plugins/glade/gbp-glade-view.c
@@ -96,13 +96,8 @@ gbp_glade_view_set_project (GbpGladeView *self,
if (self->project != NULL)
{
old_project = g_object_ref (self->project);
- g_signal_handlers_disconnect_by_func (self->project,
- G_CALLBACK (gbp_glade_view_changed_cb),
- self);
- g_signal_handlers_disconnect_by_func (self->project,
- G_CALLBACK (gbp_glade_view_notify_modified_cb),
- self);
glade_app_remove_project (self->project);
+ dzl_signal_group_set_target (self->project_signals, NULL);
g_clear_object (&self->project);
}
@@ -110,16 +105,7 @@ gbp_glade_view_set_project (GbpGladeView *self,
{
self->project = g_object_ref (project);
glade_app_add_project (self->project);
- g_signal_connect_object (self->project,
- "changed",
- G_CALLBACK (gbp_glade_view_changed_cb),
- self,
- G_CONNECT_SWAPPED);
- g_signal_connect_object (self->project,
- "notify::modified",
- G_CALLBACK (gbp_glade_view_notify_modified_cb),
- self,
- G_CONNECT_SWAPPED);
+ dzl_signal_group_set_target (self->project_signals, project);
}
if (self->designer != NULL)
@@ -347,6 +333,12 @@ gbp_glade_view_dispose (GObject *object)
g_clear_object (&self->file);
g_clear_object (&self->project);
+ if (self->project_signals != NULL)
+ {
+ dzl_signal_group_set_target (self->project_signals, NULL);
+ g_clear_object (&self->project_signals);
+ }
+
G_OBJECT_CLASS (gbp_glade_view_parent_class)->dispose (object);
}
@@ -418,6 +410,20 @@ gbp_glade_view_init (GbpGladeView *self)
ide_layout_view_set_icon_name (IDE_LAYOUT_VIEW (self), "glade-symbolic");
ide_layout_view_set_menu_id (IDE_LAYOUT_VIEW (self), "gbp-glade-view-document-menu");
+ self->project_signals = dzl_signal_group_new (GLADE_TYPE_PROJECT);
+
+ dzl_signal_group_connect_object (self->project_signals,
+ "notify::modified",
+ G_CALLBACK (gbp_glade_view_notify_modified_cb),
+ self,
+ G_CONNECT_SWAPPED);
+
+ dzl_signal_group_connect_object (self->project_signals,
+ "changed",
+ G_CALLBACK (gbp_glade_view_changed_cb),
+ self,
+ G_CONNECT_SWAPPED);
+
ide_widget_set_context_handler (self, gbp_glade_view_context_set);
project = glade_project_new ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]