[gedit] GeditDocument: save_metadata() static function



commit 44af8529cf35ae0e2b0bb8fbfd765dd6f2aebddb
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sat Jun 21 19:57:11 2014 +0200

    GeditDocument: save_metadata() static function
    
    So dispose() is smaller.

 gedit/gedit-document.c |   78 ++++++++++++++++++++++++------------------------
 1 files changed, 39 insertions(+), 39 deletions(-)
---
diff --git a/gedit/gedit-document.c b/gedit/gedit-document.c
index 07f1cb0..88497e7 100644
--- a/gedit/gedit-document.c
+++ b/gedit/gedit-document.c
@@ -213,55 +213,55 @@ set_compression_type (GeditDocument *doc,
 }
 
 static void
-gedit_document_dispose (GObject *object)
+save_metadata (GeditDocument *doc)
 {
-       GeditDocument *doc = GEDIT_DOCUMENT (object);
-
-       gedit_debug (DEBUG_DOCUMENT);
+       const gchar *language = NULL;
+       GtkTextIter iter;
+       gchar *position;
 
-       /* Metadata must be saved here and not in finalize
-        * because the language is gone by the time finalize runs.
-        * beside if some plugin prevents proper finalization by
-        * holding a ref to the doc, we still save the metadata */
-       if ((!doc->priv->dispose_has_run) && (doc->priv->location != NULL))
+       if (doc->priv->language_set_by_user)
        {
-               GtkTextIter iter;
-               gchar *position;
-               const gchar *language = NULL;
+               GtkSourceLanguage *lang = gedit_document_get_language (doc);
 
-               if (doc->priv->language_set_by_user)
-               {
-                       GtkSourceLanguage *lang;
+               language = lang != NULL ? gtk_source_language_get_id (lang) : "_NORMAL_";
+       }
 
-                       lang = gedit_document_get_language (doc);
+       gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (doc),
+                                         &iter,
+                                         gtk_text_buffer_get_insert (GTK_TEXT_BUFFER (doc)));
 
-                       if (lang == NULL)
-                               language = "_NORMAL_";
-                       else
-                               language = gtk_source_language_get_id (lang);
-               }
+       position = g_strdup_printf ("%d", gtk_text_iter_get_offset (&iter));
 
-               gtk_text_buffer_get_iter_at_mark (
-                               GTK_TEXT_BUFFER (doc),
-                               &iter,
-                               gtk_text_buffer_get_insert (GTK_TEXT_BUFFER (doc)));
+       if (language == NULL)
+       {
+               gedit_document_set_metadata (doc,
+                                            GEDIT_METADATA_ATTRIBUTE_POSITION, position,
+                                            NULL);
+       }
+       else
+       {
+               gedit_document_set_metadata (doc,
+                                            GEDIT_METADATA_ATTRIBUTE_POSITION, position,
+                                            GEDIT_METADATA_ATTRIBUTE_LANGUAGE, language,
+                                            NULL);
+       }
 
-               position = g_strdup_printf ("%d",
-                                           gtk_text_iter_get_offset (&iter));
+       g_free (position);
+}
 
-               if (language == NULL)
-               {
-                       gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_POSITION,
-                                                    position, NULL);
-               }
-               else
-               {
-                       gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_POSITION,
-                                                    position, GEDIT_METADATA_ATTRIBUTE_LANGUAGE,
-                                                    language, NULL);
-               }
+static void
+gedit_document_dispose (GObject *object)
+{
+       GeditDocument *doc = GEDIT_DOCUMENT (object);
+
+       gedit_debug (DEBUG_DOCUMENT);
 
-               g_free (position);
+       /* Metadata must be saved here and not in finalize because the language
+        * is gone by the time finalize runs.
+        */
+       if ((!doc->priv->dispose_has_run) && (doc->priv->location != NULL))
+       {
+               save_metadata (doc);
        }
 
        g_clear_object (&doc->priv->loader);


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