summaryrefslogtreecommitdiffstats
path: root/src/ui/widget/registered-widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/widget/registered-widget.cpp')
-rw-r--r--src/ui/widget/registered-widget.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/ui/widget/registered-widget.cpp b/src/ui/widget/registered-widget.cpp
index 1de084f5d..1fd956897 100644
--- a/src/ui/widget/registered-widget.cpp
+++ b/src/ui/widget/registered-widget.cpp
@@ -481,7 +481,7 @@ RegisteredTransformedPoint::RegisteredTransformedPoint ( const Glib::ustring& la
const Glib::ustring& key, Registry& wr, Inkscape::XML::Node* repr_in,
SPDocument* doc_in )
: RegisteredWidget<Point> (label, tip),
- transform(Geom::identity())
+ to_svg(Geom::identity())
{
init_parent(key, wr, repr_in, doc_in);
@@ -493,6 +493,25 @@ RegisteredTransformedPoint::RegisteredTransformedPoint ( const Glib::ustring& la
}
void
+RegisteredTransformedPoint::setValue(Geom::Point & p)
+{
+ Geom::Point new_p = p * to_svg.inverse();
+ Point::setValue(new_p); // the Point widget should display things in canvas coordinates
+}
+
+void
+RegisteredTransformedPoint::setTransform(Geom::Matrix & canvas_to_svg)
+{
+ // check if matrix is singular / has inverse
+ if ( ! canvas_to_svg.isSingular() ) {
+ to_svg = canvas_to_svg;
+ } else {
+ // set back to default
+ to_svg = Geom::identity();
+ }
+}
+
+void
RegisteredTransformedPoint::on_value_changed()
{
if (setProgrammatically()) {
@@ -505,7 +524,7 @@ RegisteredTransformedPoint::on_value_changed()
_wr->setUpdating (true);
- Geom::Point pos = getValue() * transform;
+ Geom::Point pos = getValue() * to_svg;
Inkscape::SVGOStringStream os;
os << pos;