[evince] shell: Create metadata object even for temp files



commit 6d25b933a07a6689bf33f9b534616f99a1be9075
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Tue Aug 7 15:46:36 2012 +0200

    shell: Create metadata object even for temp files
    
    Metadata won't be saved in those cases, but default settings will
    applied.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=680145

 shell/ev-metadata.c |   13 +++++++++----
 shell/ev-window.c   |    2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/shell/ev-metadata.c b/shell/ev-metadata.c
index 1e150c8..b0e23a1 100644
--- a/shell/ev-metadata.c
+++ b/shell/ev-metadata.c
@@ -22,6 +22,7 @@
 #include <string.h>
 
 #include "ev-metadata.h"
+#include "ev-file-helpers.h"
 
 struct _EvMetadata {
 	GObject base;
@@ -129,9 +130,10 @@ ev_metadata_new (GFile *file)
 	g_return_val_if_fail (G_IS_FILE (file), NULL);
 
 	metadata = EV_METADATA (g_object_new (EV_TYPE_METADATA, NULL));
-	metadata->file = g_object_ref (file);
-
-	ev_metadata_load (metadata);
+        if (!ev_file_is_temp (file)) {
+                metadata->file = g_object_ref (file);
+                ev_metadata_load (metadata);
+        }
 
 	return metadata;
 }
@@ -178,6 +180,10 @@ ev_metadata_set_string (EvMetadata  *metadata,
 	GFileInfo *info;
 	gchar     *gio_key;
 
+        g_hash_table_insert (metadata->items, g_strdup (key), g_strdup (value));
+        if (!metadata->file)
+                return TRUE;
+
 	info = g_file_info_new ();
 
 	gio_key = g_strconcat (EV_METADATA_NAMESPACE"::", key, NULL);
@@ -190,7 +196,6 @@ ev_metadata_set_string (EvMetadata  *metadata,
 	}
 	g_free (gio_key);
 
-	g_hash_table_insert (metadata->items, g_strdup (key), g_strdup (value));
 	g_file_set_attributes_async (metadata->file,
 				     info,
 				     0,
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 71a90bb..70c4ce5 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -2132,7 +2132,7 @@ ev_window_open_uri (EvWindow       *ev_window,
 		g_object_unref (ev_window->priv->bookmarks);
 
 	source_file = g_file_new_for_uri (uri);
-	if (!ev_file_is_temp (source_file) && ev_is_metadata_supported_for_file (source_file)) {
+	if (ev_is_metadata_supported_for_file (source_file)) {
 		ev_window->priv->metadata = ev_metadata_new (source_file);
 		ev_window_init_metadata_with_default_values (ev_window);
 	} else {



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