From: cilix42 Date: Thu, 6 Mar 2008 22:26:46 +0000 (+0000) Subject: If present, use existent perspective as default for new boxes when opening a document. X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=793350428bfc8e69ecfe65fa638afe4acb1acdd9;p=inkscape.git If present, use existent perspective as default for new boxes when opening a document. --- diff --git a/src/document.cpp b/src/document.cpp index cdebaabba..e537e43de 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -351,7 +351,10 @@ sp_document_create(Inkscape::XML::Document *rdoc, // But this is probably a bad idea since we need to adapt it for every change of selection, which will // completely clutter the undo history. Maybe rather save it to prefs on exit and re-read it on startup? - document->current_persp3d = persp3d_create_xml_element (document); + document->current_persp3d = persp3d_document_first_persp(document); + if (!document->current_persp3d) { + document->current_persp3d = persp3d_create_xml_element (document); + } sp_document_set_undo_sensitive(document, true); diff --git a/src/persp3d.cpp b/src/persp3d.cpp index 35999720d..e5cade661 100644 --- a/src/persp3d.cpp +++ b/src/persp3d.cpp @@ -237,6 +237,19 @@ persp3d_create_xml_element (SPDocument *document, Persp3D *dup) {// if dup is gi return (Persp3D *) sp_object_get_child_by_repr (SP_OBJECT(defs), repr); } +Persp3D * +persp3d_document_first_persp (SPDocument *document) { + SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document); + Inkscape::XML::Node *repr; + for (SPObject *child = sp_object_first_child(defs); child != NULL; child = SP_OBJECT_NEXT(child) ) { + repr = SP_OBJECT_REPR(child); + if (SP_IS_PERSP3D(child)) { + return SP_PERSP3D(child); + } + } + return NULL; +} + /** * Virtual write: write object attributes to repr. */ diff --git a/src/persp3d.h b/src/persp3d.h index 37072889c..4819a52e9 100644 --- a/src/persp3d.h +++ b/src/persp3d.h @@ -90,6 +90,7 @@ bool persp3d_perspectives_coincide(const Persp3D *lhs, const Persp3D *rhs); void persp3d_absorb(Persp3D *persp1, Persp3D *persp2); Persp3D * persp3d_create_xml_element (SPDocument *document, Persp3D *dup = NULL); +Persp3D * persp3d_document_first_persp (SPDocument *document); std::set persp3d_currently_selected_persps(); bool persp3d_has_all_boxes_in_selection (Persp3D *persp);