From 16f7dcafe4fac100f1325b88f4623b7d5adf9a97 Mon Sep 17 00:00:00 2001 From: Nicolas Dufour Date: Sun, 26 Sep 2010 19:53:05 +0200 Subject: Fix for Bug #586955 (the unit for user defined document size is not refreshed if document is reopen). (bzr r9793) --- src/sp-namedview.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/sp-namedview.cpp') 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); -- cgit v1.2.3