summaryrefslogtreecommitdiffstats
path: root/src/sp-item.cpp
diff options
context:
space:
mode:
authorDiederik van Lierop <mail@diedenrezi.nl>2014-08-26 20:38:14 +0000
committerDiederik van Lierop <mail@diedenrezi.nl>2014-08-26 20:38:14 +0000
commit7fd8ede6c698136bfa675dd4f1d5da6f5803154f (patch)
treeca7268c7a2bc3a6e68adfa95251a34bcadbae3c6 /src/sp-item.cpp
parentTranslations. Czech translation update by Ivan Řihošek (31% translated). (diff)
downloadinkscape-7fd8ede6c698136bfa675dd4f1d5da6f5803154f.tar.gz
inkscape-7fd8ede6c698136bfa675dd4f1d5da6f5803154f.zip
Fix rotation center regression caused by my own commit 13512
Fixed bugs: - https://launchpad.net/bugs/1360953 - https://launchpad.net/bugs/1360946 (bzr r13534)
Diffstat (limited to 'src/sp-item.cpp')
-rw-r--r--src/sp-item.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/sp-item.cpp b/src/sp-item.cpp
index 428f9555e..19dc71785 100644
--- a/src/sp-item.cpp
+++ b/src/sp-item.cpp
@@ -234,9 +234,13 @@ void SPItem::setCenter(Geom::Point const &object_centre) {
document->ensureUpToDate();
// Copied from DocumentProperties::onDocUnitChange()
- gdouble viewscale_w = this->document->getWidth().value("px") / this->document->getRoot()->viewBox.width();
- gdouble viewscale_h = this->document->getHeight().value("px")/ this->document->getRoot()->viewBox.height();
- gdouble viewscale = std::min(viewscale_h, viewscale_w);
+ gdouble viewscale = 1.0;
+ Geom::Rect vb = this->document->getRoot()->viewBox;
+ if ( !vb.hasZeroArea() ) {
+ gdouble viewscale_w = this->document->getWidth().value("px") / vb.width();
+ gdouble viewscale_h = this->document->getHeight().value("px")/ vb.height();
+ viewscale = std::min(viewscale_h, viewscale_w);
+ }
// FIXME this is seriously wrong
Geom::OptRect bbox = desktopGeometricBounds();
@@ -267,9 +271,13 @@ Geom::Point SPItem::getCenter() const {
document->ensureUpToDate();
// Copied from DocumentProperties::onDocUnitChange()
- gdouble viewscale_w = this->document->getWidth().value("px") / this->document->getRoot()->viewBox.width();
- gdouble viewscale_h = this->document->getHeight().value("px")/ this->document->getRoot()->viewBox.height();
- gdouble viewscale = std::min(viewscale_h, viewscale_w);
+ gdouble viewscale = 1.0;
+ Geom::Rect vb = this->document->getRoot()->viewBox;
+ if ( !vb.hasZeroArea() ) {
+ gdouble viewscale_w = this->document->getWidth().value("px") / vb.width();
+ gdouble viewscale_h = this->document->getHeight().value("px")/ vb.height();
+ viewscale = std::min(viewscale_h, viewscale_w);
+ }
// FIXME this is seriously wrong
Geom::OptRect bbox = desktopGeometricBounds();