summaryrefslogtreecommitdiffstats
path: root/src/sp-namedview.cpp
diff options
context:
space:
mode:
authorNicolas Dufour <nicoduf@yahoo.fr>2010-09-26 17:53:05 +0000
committerJazzyNico <nicoduf@yahoo.fr>2010-09-26 17:53:05 +0000
commit16f7dcafe4fac100f1325b88f4623b7d5adf9a97 (patch)
tree6e9209eb7d2a3b3eec006fe7567eaeb83b7bad51 /src/sp-namedview.cpp
parent3DBox tool: snap the first point of the drag action (diff)
downloadinkscape-16f7dcafe4fac100f1325b88f4623b7d5adf9a97.tar.gz
inkscape-16f7dcafe4fac100f1325b88f4623b7d5adf9a97.zip
Fix for Bug #586955 (the unit for user defined document size is not refreshed if document is reopen).
(bzr r9793)
Diffstat (limited to 'src/sp-namedview.cpp')
-rw-r--r--src/sp-namedview.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp
index 44c3bf620..f7fdef94b 100644
--- a/src/sp-namedview.cpp
+++ b/src/sp-namedview.cpp
@@ -218,6 +218,7 @@ static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape:
}
sp_object_read_attr(object, "inkscape:document-units");
+ sp_object_read_attr(object, "units");
sp_object_read_attr(object, "viewonly");
sp_object_read_attr(object, "showguides");
sp_object_read_attr(object, "showgrid");
@@ -572,6 +573,30 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va
object->requestModified(SP_OBJECT_MODIFIED_FLAG);
break;
}
+ case SP_ATTR_UNITS: {
+ SPUnit const *new_unit = NULL;
+
+ if (value) {
+ SPUnit const *const req_unit = sp_unit_get_by_abbreviation(value);
+ if ( req_unit == NULL ) {
+ g_warning("Unrecognized unit `%s'", value);
+ /* fixme: Document errors should be reported in the status bar or
+ * the like (e.g. as per
+ * http://www.w3.org/TR/SVG11/implnote.html#ErrorProcessing); g_log
+ * should be only for programmer errors. */
+ } else if ( req_unit->base == SP_UNIT_ABSOLUTE ||
+ req_unit->base == SP_UNIT_DEVICE ) {
+ new_unit = req_unit;
+ } else {
+ g_warning("Document units must be absolute like `mm', `pt' or `px', but found `%s'",
+ value);
+ /* fixme: Don't use g_log (see above). */
+ }
+ }
+ nv->units = new_unit;
+ object->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ break;
+ }
default:
if (((SPObjectClass *) (parent_class))->set) {
((SPObjectClass *) (parent_class))->set(object, key, value);