[gedit] View: minor code change: buffer_changed()



commit 695edf80d18ef045450178aed9273bbbc7b9b387
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Mon Nov 23 18:44:15 2020 +0100

    View: minor code change: buffer_changed()
    
    - It assumes that the GtkTextBuffer is always a GeditDocument, because
      the GtkTextView::create_buffer vfunc is overrided.
    
    - Rename some functions, add some comments, ...

 gedit/gedit-view.c | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)
---
diff --git a/gedit/gedit-view.c b/gedit/gedit-view.c
index 38e569510..8e3238bc6 100644
--- a/gedit/gedit-view.c
+++ b/gedit/gedit-view.c
@@ -77,25 +77,17 @@ file_read_only_notify_cb (GtkSourceFile *file,
 }
 
 static void
-on_notify_buffer_cb (GeditView  *view,
-                    GParamSpec *pspec,
-                    gpointer    userdata)
+buffer_changed (GeditView *view)
 {
-       GtkTextBuffer *buffer;
+       GeditDocument *doc;
        GtkSourceFile *file;
 
-       tepl_signal_group_clear (&view->priv->file_signal_group);
-
-       buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-
-       if (!GEDIT_IS_DOCUMENT (buffer))
-       {
-               return;
-       }
-
-       file = gedit_document_get_file (GEDIT_DOCUMENT (buffer));
+       doc = GEDIT_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+       file = gedit_document_get_file (doc);
 
+       tepl_signal_group_clear (&view->priv->file_signal_group);
        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",
@@ -105,6 +97,14 @@ on_notify_buffer_cb (GeditView  *view,
        update_editable (view);
 }
 
+static void
+buffer_notify_cb (GeditView  *view,
+                 GParamSpec *pspec,
+                 gpointer    user_data)
+{
+       buffer_changed (view);
+}
+
 static void
 gedit_view_init (GeditView *view)
 {
@@ -128,18 +128,21 @@ gedit_view_init (GeditView *view)
                gtk_target_list_add_uri_targets (target_list, TARGET_URI_LIST);
        }
 
+       /* GeditViewActivatable */
        view->priv->extensions =
                peas_extension_set_new (PEAS_ENGINE (gedit_plugins_engine_get_default ()),
                                        GEDIT_TYPE_VIEW_ACTIVATABLE,
                                        "view", view,
                                        NULL);
 
-       /* Act on buffer change */
+       /* Act on buffer changes */
+       buffer_changed (view);
        g_signal_connect (view,
                          "notify::buffer",
-                         G_CALLBACK (on_notify_buffer_cb),
+                         G_CALLBACK (buffer_notify_cb),
                          NULL);
 
+       /* CSS stuff */
        view->priv->css_provider = gtk_css_provider_new ();
        context = gtk_widget_get_style_context (GTK_WIDGET (view));
        gtk_style_context_add_class (context, "gedit-view");
@@ -163,7 +166,7 @@ gedit_view_dispose (GObject *object)
         * There is no problem calling g_signal_handlers_disconnect_by_func()
         * several times (if dispose() is called several times).
         */
-       g_signal_handlers_disconnect_by_func (view, on_notify_buffer_cb, NULL);
+       g_signal_handlers_disconnect_by_func (view, buffer_notify_cb, NULL);
 
        g_clear_object (&view->priv->css_provider);
        g_clear_pointer (&view->priv->font_desc, pango_font_description_free);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]