summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMaximilian Albert <maximilian.albert@gmail.com>2008-03-06 22:26:46 +0000
committercilix42 <cilix42@users.sourceforge.net>2008-03-06 22:26:46 +0000
commit96b8cba0c6f8de6117471aff42d164081d53e746 (patch)
tree6ff481d338e1fb16e21740595ca98141aa76d427 /src
parentadd preferences for path flashing on mouseover (diff)
downloadinkscape-96b8cba0c6f8de6117471aff42d164081d53e746.tar.gz
inkscape-96b8cba0c6f8de6117471aff42d164081d53e746.zip
If present, use existent perspective as default for new boxes when opening a document.
(bzr r4978)
Diffstat (limited to 'src')
-rw-r--r--src/document.cpp5
-rw-r--r--src/persp3d.cpp13
-rw-r--r--src/persp3d.h1
3 files changed, 18 insertions, 1 deletions
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 *> persp3d_currently_selected_persps();
bool persp3d_has_all_boxes_in_selection (Persp3D *persp);