Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Parker <palfrey@tevp.net>2007-01-25 09:37:16 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2007-01-25 09:37:16 (GMT)
commitbec5242aa2645d9a62d5971556de1348b02b535d (patch)
tree95ad801597e0adc68f2b4878b9d355314ce9bbdc
parent235b9896d5ea87eab157b46b4f00120c25949c00 (diff)
Correctly handle impress document errors. Fixes nautilus crash in property
2007-01-25 Tom Parker <palfrey@tevp.net> * backend/impress/impress-document.c: (impress_document_load), (impress_document_finalize), (impress_document_init): * properties/ev-properties-main.c: (ev_properties_get_pages): Correctly handle impress document errors. Fixes nautilus crash in property page #370491. svn path=/trunk/; revision=2250
-rw-r--r--ChangeLog9
-rw-r--r--backend/impress/impress-document.c37
-rw-r--r--properties/ev-properties-main.c3
3 files changed, 39 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 961a68f..2180c31 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-01-25 Tom Parker <palfrey@tevp.net>
+
+ * backend/impress/impress-document.c: (impress_document_load),
+ (impress_document_finalize), (impress_document_init):
+ * properties/ev-properties-main.c: (ev_properties_get_pages):
+
+ Correctly handle impress document errors. Fixes nautilus
+ crash in property page #370491.
+
2007-01-24 Carlos Garcia Campos <carlosgc@gnome.org>
* shell/ev-job-queue.c: (handle_job), (search_for_jobs_unlocked),
diff --git a/backend/impress/impress-document.c b/backend/impress/impress-document.c
index 7459dab..9756a84 100644
--- a/backend/impress/impress-document.c
+++ b/backend/impress/impress-document.c
@@ -19,7 +19,9 @@
*/
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
#include <string.h>
+
#include "imposter.h"
#include "impress-document.h"
#include "ev-document-thumbnails.h"
@@ -286,8 +288,10 @@ impress_document_load (EvDocument *document,
filename = g_filename_from_uri (uri, NULL, error);
if (!filename)
{
- //FIXME
- //g_error_set ();
+ g_set_error (error,
+ EV_DOCUMENT_ERROR,
+ EV_DOCUMENT_ERROR_INVALID,
+ _("Remote files aren't supported"));
return FALSE;
}
@@ -295,7 +299,10 @@ impress_document_load (EvDocument *document,
if (!imp)
{
- //FIXME translate the err, set error
+ g_set_error (error,
+ EV_DOCUMENT_ERROR,
+ EV_DOCUMENT_ERROR_INVALID,
+ _("Invalid document"));
g_free (filename);
return FALSE;
}
@@ -400,13 +407,23 @@ impress_document_finalize (GObject *object)
{
ImpressDocument *impress_document = IMPRESS_DOCUMENT (object);
- g_mutex_free (impress_document->mutex);
+ if (impress_document->mutex)
+ g_mutex_free (impress_document->mutex);
+
+ if (impress_document->imp)
+ imp_close (impress_document->imp);
+
+ if (impress_document->ctx)
+ imp_delete_context (impress_document->ctx);
+
+ if (impress_document->pango_ctx)
+ g_object_unref (impress_document->pango_ctx);
+
+ if (impress_document->pixmap)
+ g_object_unref (G_OBJECT (impress_document->pixmap));
- imp_close (impress_document->imp);
- imp_delete_context (impress_document->ctx);
- g_free (impress_document->pango_ctx);
- g_object_unref (G_OBJECT (impress_document->pixmap));
- g_object_unref (impress_document->gc);
+ if (impress_document->gc)
+ g_object_unref (impress_document->gc);
G_OBJECT_CLASS (impress_document_parent_class)->finalize (object);
}
@@ -516,7 +533,7 @@ impress_document_init (ImpressDocument *impress_document)
impress_document->pixmap = gdk_pixmap_new (window,
PAGE_WIDTH, PAGE_HEIGHT, -1);
impress_document->gc = gdk_gc_new (impress_document->pixmap);
- impress_document->pango_ctx = gdk_pango_context_get ();
+ impress_document->pango_ctx = gdk_pango_context_get_for_screen (gdk_screen_get_default ());
}
/*
diff --git a/properties/ev-properties-main.c b/properties/ev-properties-main.c
index 32677fc..10d1ec8 100644
--- a/properties/ev-properties-main.c
+++ b/properties/ev-properties-main.c
@@ -103,6 +103,9 @@ ev_properties_get_pages (NautilusPropertyPageProvider *provider,
g_error_free (error);
goto end;
}
+
+ if (!document)
+ goto end;
label = gtk_label_new (_("Document"));
page = ev_properties_view_new ();