summaryrefslogtreecommitdiffstats
path: root/src/box3d-context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/box3d-context.cpp')
-rw-r--r--src/box3d-context.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/box3d-context.cpp b/src/box3d-context.cpp
index 78e80be45..68480a00d 100644
--- a/src/box3d-context.cpp
+++ b/src/box3d-context.cpp
@@ -206,6 +206,24 @@ static void sp_box3d_context_selection_changed(Inkscape::Selection *selection, g
}
}
+/* create a default perspective in document defs if none is present
+ (can happen after 'vacuum defs' or when a pre-0.46 file is opened) */
+static void sp_box3d_context_check_for_persp_in_defs(SPDocument *document) {
+ SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document);
+
+ bool has_persp = false;
+ for (SPObject *child = sp_object_first_child(defs); child != NULL; child = SP_OBJECT_NEXT(child) ) {
+ if (SP_IS_PERSP3D(child)) {
+ has_persp = true;
+ break;
+ }
+ }
+
+ if (!has_persp) {
+ document->current_persp3d = persp3d_create_xml_element (document);
+ }
+}
+
static void sp_box3d_context_setup(SPEventContext *ec)
{
Box3DContext *bc = SP_BOX3D_CONTEXT(ec);
@@ -214,6 +232,8 @@ static void sp_box3d_context_setup(SPEventContext *ec)
((SPEventContextClass *) parent_class)->setup(ec);
}
+ sp_box3d_context_check_for_persp_in_defs(sp_desktop_document (ec->desktop));
+
SPItem *item = sp_desktop_selection(ec->desktop)->singleItem();
if (item) {
ec->shape_knot_holder = sp_item_knot_holder(item, ec->desktop);