[gedit] View: use TeplSignalGroup
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] View: use TeplSignalGroup
- Date: Mon, 23 Nov 2020 17:16:55 +0000 (UTC)
commit 4df850fb6ea551b5de1541ddbd1fff52b7f2b01e
Author: Sébastien Wilmet <swilmet gnome org>
Date: Mon Nov 23 18:08:58 2020 +0100
View: use TeplSignalGroup
gedit/gedit-view.c | 41 ++++++++++++-----------------------------
1 file changed, 12 insertions(+), 29 deletions(-)
---
diff --git a/gedit/gedit-view.c b/gedit/gedit-view.c
index 41ca4ef48..38e569510 100644
--- a/gedit/gedit-view.c
+++ b/gedit/gedit-view.c
@@ -36,12 +36,13 @@ enum
struct _GeditViewPrivate
{
- GeditDocument *current_document;
PeasExtensionSet *extensions;
gchar *direct_save_uri;
GtkCssProvider *css_provider;
PangoFontDescription *font_desc;
+
+ TeplSignalGroup *file_signal_group;
};
G_DEFINE_TYPE_WITH_PRIVATE (GeditView, gedit_view, TEPL_TYPE_VIEW)
@@ -75,24 +76,6 @@ file_read_only_notify_cb (GtkSourceFile *file,
update_editable (view);
}
-static void
-current_document_removed (GeditView *view)
-{
- if (view->priv->current_document != NULL)
- {
- GtkSourceFile *file;
-
- file = gedit_document_get_file (view->priv->current_document);
-
- g_signal_handlers_disconnect_by_func (file,
- file_read_only_notify_cb,
- view);
-
- g_object_unref (view->priv->current_document);
- view->priv->current_document = NULL;
- }
-}
-
static void
on_notify_buffer_cb (GeditView *view,
GParamSpec *pspec,
@@ -101,7 +84,8 @@ on_notify_buffer_cb (GeditView *view,
GtkTextBuffer *buffer;
GtkSourceFile *file;
- current_document_removed (view);
+ tepl_signal_group_clear (&view->priv->file_signal_group);
+
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
if (!GEDIT_IS_DOCUMENT (buffer))
@@ -109,14 +93,14 @@ on_notify_buffer_cb (GeditView *view,
return;
}
- view->priv->current_document = g_object_ref (GEDIT_DOCUMENT (buffer));
+ file = gedit_document_get_file (GEDIT_DOCUMENT (buffer));
- file = gedit_document_get_file (view->priv->current_document);
- g_signal_connect_object (file,
- "notify::read-only",
- G_CALLBACK (file_read_only_notify_cb),
- view,
- 0);
+ view->priv->file_signal_group = tepl_signal_group_new (G_OBJECT (file));
+ tepl_signal_group_add (view->priv->file_signal_group,
+ g_signal_connect (file,
+ "notify::read-only",
+ G_CALLBACK (file_read_only_notify_cb),
+ view));
update_editable (view);
}
@@ -171,8 +155,7 @@ gedit_view_dispose (GObject *object)
GeditView *view = GEDIT_VIEW (object);
g_clear_object (&view->priv->extensions);
-
- current_document_removed (view);
+ tepl_signal_group_clear (&view->priv->file_signal_group);
/* Disconnect notify buffer because the destroy of the textview will set
* the buffer to NULL, and we call get_buffer in the notify which would
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]