diff options
| author | Matthew Petroff <matthew@mpetroff.net> | 2013-09-22 17:47:37 +0000 |
|---|---|---|
| committer | Matthew Petroff <matthew@mpetroff.net> | 2013-09-22 17:47:37 +0000 |
| commit | 2df0abfd438d90edb6056f0197ed9d27ce2cd1f1 (patch) | |
| tree | ad735614844c956d9799885b605dd3d866cd611f /src | |
| parent | Fix CMake build (follow-up to r12567) (diff) | |
| download | inkscape-2df0abfd438d90edb6056f0197ed9d27ce2cd1f1.tar.gz inkscape-2df0abfd438d90edb6056f0197ed9d27ce2cd1f1.zip | |
Fix adding viewBox to new documents.
Fixed bugs:
- https://launchpad.net/bugs/1228660
- https://launchpad.net/bugs/1228693
- https://launchpad.net/bugs/1228852
(bzr r12575)
Diffstat (limited to 'src')
| -rw-r--r-- | src/document.cpp | 5 | ||||
| -rw-r--r-- | src/extension/internal/cdr-input.cpp | 6 | ||||
| -rw-r--r-- | src/extension/internal/emf-inout.cpp | 5 | ||||
| -rw-r--r-- | src/extension/internal/gdkpixbuf-input.cpp | 6 | ||||
| -rw-r--r-- | src/extension/internal/pdf-input-cairo.cpp | 9 | ||||
| -rw-r--r-- | src/extension/internal/pdfinput/pdf-input.cpp | 6 | ||||
| -rw-r--r-- | src/extension/internal/vsd-input.cpp | 6 | ||||
| -rw-r--r-- | src/extension/internal/wmf-inout.cpp | 5 | ||||
| -rw-r--r-- | src/extension/internal/wpg-input.cpp | 8 | ||||
| -rw-r--r-- | src/file.cpp | 5 | ||||
| -rw-r--r-- | src/interface.cpp | 5 |
11 files changed, 61 insertions, 5 deletions
diff --git a/src/document.cpp b/src/document.cpp index 5e59a0a0c..967d049c2 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -450,11 +450,6 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc, document->setCurrentPersp3DImpl(persp_impl); } - // Set viewBox if it doesn't exist - if (!document->root->viewBox_set) { - document->setViewBox(Geom::Rect::from_xywh(0, 0, document->getWidth().quantity, document->getHeight().quantity)); - } - DocumentUndo::setUndoSensitive(document, true); // reset undo key when selection changes, so that same-key actions on different objects are not coalesced diff --git a/src/extension/internal/cdr-input.cpp b/src/extension/internal/cdr-input.cpp index e6c400fb5..517d6fb9c 100644 --- a/src/extension/internal/cdr-input.cpp +++ b/src/extension/internal/cdr-input.cpp @@ -51,6 +51,8 @@ #include "svg-view.h" #include "svg-view-widget.h" +#include "util/units.h" + namespace Inkscape { namespace Extension { namespace Internal { @@ -254,6 +256,10 @@ SPDocument *CdrInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * u } SPDocument * doc = SPDocument::createNewDocFromMem(tmpSVGOutput[page_num-1].cstr(), strlen(tmpSVGOutput[page_num-1].cstr()), TRUE); + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } return doc; } diff --git a/src/extension/internal/emf-inout.cpp b/src/extension/internal/emf-inout.cpp index ab8a1ab64..d9489af31 100644 --- a/src/extension/internal/emf-inout.cpp +++ b/src/extension/internal/emf-inout.cpp @@ -3483,6 +3483,11 @@ Emf::open( Inkscape::Extension::Input * /*mod*/, const gchar *uri ) d.tri = trinfo_release_except_FC(d.tri); + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } + return doc; } diff --git a/src/extension/internal/gdkpixbuf-input.cpp b/src/extension/internal/gdkpixbuf-input.cpp index 87cf8a9cc..13267ee2b 100644 --- a/src/extension/internal/gdkpixbuf-input.cpp +++ b/src/extension/internal/gdkpixbuf-input.cpp @@ -102,6 +102,12 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) doc->getRoot()->appendChildRepr(image_node); Inkscape::GC::release(image_node); fit_canvas_to_drawing(doc); + + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } + // restore undo, as now this document may be shown to the user if a bitmap was opened DocumentUndo::setUndoSensitive(doc, saved); } else { diff --git a/src/extension/internal/pdf-input-cairo.cpp b/src/extension/internal/pdf-input-cairo.cpp index 355a5784d..adac0d6c9 100644 --- a/src/extension/internal/pdf-input-cairo.cpp +++ b/src/extension/internal/pdf-input-cairo.cpp @@ -23,6 +23,10 @@ #include "extension/input.h" #include "dialogs/dialog-events.h" #include "document.h" +#include "sp-root.h" +#include "util/units.h" + +#include <2geom/rect.h> #include "inkscape.h" @@ -620,6 +624,11 @@ PdfInputCairo::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri) { SPDocument * doc = SPDocument::createNewDocFromMem(output->c_str(), output->length(), TRUE); + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } + delete output; g_object_unref(page); g_object_unref(document); diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp index b04c9782f..213550688 100644 --- a/src/extension/internal/pdfinput/pdf-input.cpp +++ b/src/extension/internal/pdfinput/pdf-input.cpp @@ -46,6 +46,7 @@ #include "document-private.h" #include "document-undo.h" #include "inkscape.h" +#include "util/units.h" #include "dialogs/dialog-events.h" #include <gtk/gtk.h> @@ -747,6 +748,11 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) { delete pdf_doc; delete dlg; + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } + // Restore undo DocumentUndo::setUndoSensitive(doc, saved); diff --git a/src/extension/internal/vsd-input.cpp b/src/extension/internal/vsd-input.cpp index 12e5150cb..1c768f55b 100644 --- a/src/extension/internal/vsd-input.cpp +++ b/src/extension/internal/vsd-input.cpp @@ -254,6 +254,12 @@ SPDocument *VsdInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * u } SPDocument * doc = SPDocument::createNewDocFromMem(tmpSVGOutput[page_num-1].cstr(), strlen(tmpSVGOutput[page_num-1].cstr()), TRUE); + + // Set viewBox if it doesn't exist + if (!doc->root->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } + return doc; } diff --git a/src/extension/internal/wmf-inout.cpp b/src/extension/internal/wmf-inout.cpp index 373138187..e7dfa46d7 100644 --- a/src/extension/internal/wmf-inout.cpp +++ b/src/extension/internal/wmf-inout.cpp @@ -3171,6 +3171,11 @@ Wmf::open( Inkscape::Extension::Input * /*mod*/, const gchar *uri ) d.tri = trinfo_release_except_FC(d.tri); + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } + return doc; } diff --git a/src/extension/internal/wpg-input.cpp b/src/extension/internal/wpg-input.cpp index cb1677547..ac86a6171 100644 --- a/src/extension/internal/wpg-input.cpp +++ b/src/extension/internal/wpg-input.cpp @@ -48,6 +48,8 @@ #include "extension/system.h" #include "extension/input.h" #include "document.h" +#include "sp-root.h" +#include "util/units.h" #include <cstring> // Take a guess and fallback to 0.1.x if no configure has run @@ -109,6 +111,12 @@ SPDocument *WpgInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * u //printf("I've got a doc: \n%s", painter.document.c_str()); SPDocument * doc = SPDocument::createNewDocFromMem(output.cstr(), strlen(output.cstr()), TRUE); + + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } + delete input; return doc; } diff --git a/src/file.cpp b/src/file.cpp index baa7b12b5..b19fe21ff 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -140,6 +140,11 @@ SPDesktop *sp_file_new(const std::string &templ) DocumentUndo::clearUndo(doc); } + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } + SPDesktop *desktop = SP_ACTIVE_DESKTOP; if (desktop) desktop->setWaitingCursor(); diff --git a/src/interface.cpp b/src/interface.cpp index d18eb8063..e57092e2b 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -50,6 +50,7 @@ #include "sp-gradient.h" #include "sp-flowtext.h" #include "sp-namedview.h" +#include "sp-root.h" #include "ui/view/view.h" #include "helper/action.h" #include "helper/action-context.h" @@ -321,6 +322,10 @@ sp_ui_close_view(GtkWidget */*widget*/) if (desktops.size() == 1) { Glib::ustring templateUri = sp_file_default_template_uri(); SPDocument *doc = SPDocument::createNewDoc( templateUri.c_str() , TRUE, true ); + // Set viewBox if it doesn't exist + if (!doc->getRoot()->viewBox_set) { + doc->setViewBox(Geom::Rect::from_xywh(0, 0, doc->getWidth().quantity, doc->getHeight().quantity)); + } dt->change_document(doc); sp_namedview_window_from_document(dt); sp_namedview_update_layers_from_document(dt); |
