summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authormiklosh <miklosh@users.sourceforge.net>2006-08-06 21:29:57 +0000
committermiklosh <miklosh@users.sourceforge.net>2006-08-06 21:29:57 +0000
commitf37344648235433838c129202f6f2e339eec794c (patch)
treebd3eb0cbe8bdf47dfc926c0a85c3e868b6a4f026 /src
parentAdded Ulf's various PDF fixes. (diff)
downloadinkscape-f37344648235433838c129202f6f2e339eec794c.tar.gz
inkscape-f37344648235433838c129202f6f2e339eec794c.zip
Notify save failure by throwing "save_failed".
(bzr r1568)
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/cairo-pdf-out.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/extension/internal/cairo-pdf-out.cpp b/src/extension/internal/cairo-pdf-out.cpp
index 52eb668c9..c73faaef6 100644
--- a/src/extension/internal/cairo-pdf-out.cpp
+++ b/src/extension/internal/cairo-pdf-out.cpp
@@ -38,7 +38,7 @@ CairoPdfOutput::check (Inkscape::Extension::Extension * module)
}
-static void
+static unsigned int
pdf_print_document_to_file(SPDocument *doc, gchar const *filename)
{
Inkscape::Extension::Print *mod;
@@ -62,10 +62,14 @@ pdf_print_document_to_file(SPDocument *doc, gchar const *filename)
mod->arena = NRArena::create();
mod->dkey = sp_item_display_key_new(1);
mod->root = sp_item_invoke_show(mod->base, mod->arena, mod->dkey, SP_ITEM_SHOW_DISPLAY);
+
/* Print document */
ret = mod->begin(doc);
- sp_item_invoke_print(mod->base, &context);
- ret = mod->finish();
+ if (ret) {
+ sp_item_invoke_print(mod->base, &context);
+ ret = mod->finish();
+ }
+
/* Release arena */
sp_item_invoke_hide(mod->base, mod->dkey);
mod->base = NULL;
@@ -78,7 +82,7 @@ pdf_print_document_to_file(SPDocument *doc, gchar const *filename)
mod->set_param_string("destination", oldoutput);
g_free(oldoutput);
- return;
+ return ret;
}
@@ -96,6 +100,7 @@ void
CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const gchar *uri)
{
Inkscape::Extension::Extension * ext;
+ unsigned int ret;
ext = Inkscape::Extension::db.get(SP_MODULE_KEY_PRINT_CAIRO_PDF);
if (ext == NULL)
@@ -103,8 +108,11 @@ CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g
gchar * final_name;
final_name = g_strdup_printf("> %s", uri);
- pdf_print_document_to_file(doc, final_name);
+ ret = pdf_print_document_to_file(doc, final_name);
g_free(final_name);
+
+ if (!ret)
+ throw Inkscape::Extension::Output::save_failed();
return;
}