profilewidget2: add resetZoom()

resetZoom() is now a new method that is called both
when 'printMode' is updated or when the dive is re-plotted.

Fixes a bug where zooming in on the profile and then
printing the dive has the profile at the wrong zoom level (makes
the profile look smaller).

Reported-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Lubomir I. Ivanov 2015-10-11 14:21:13 +03:00 committed by Dirk Hohndel
parent f1b4fb21db
commit 11e38710e4
2 changed files with 12 additions and 5 deletions

View file

@ -477,6 +477,15 @@ void ProfileWidget2::setupSceneAndFlags()
background->setFlag(QGraphicsItem::ItemIgnoresTransformations);
}
void ProfileWidget2::resetZoom()
{
if (!zoomLevel)
return;
const qreal defScale = 1.0 / qPow(zoomFactor, (qreal)zoomLevel);
scale(defScale, defScale);
zoomLevel = 0;
}
// Currently just one dive, but the plan is to enable All of the selected dives.
void ProfileWidget2::plotDive(struct dive *d, bool force)
{
@ -521,11 +530,7 @@ void ProfileWidget2::plotDive(struct dive *d, bool force)
}
// restore default zoom level
if (zoomLevel) {
const qreal defScale = 1.0 / qPow(zoomFactor, (qreal)zoomLevel);
scale(defScale, defScale);
zoomLevel = 0;
}
resetZoom();
// reset some item visibility on printMode changes
toolTipItem->setVisible(!printMode);
@ -1473,6 +1478,7 @@ bool ProfileWidget2::getPrintMode()
void ProfileWidget2::setPrintMode(bool mode, bool grayscale)
{
printMode = mode;
resetZoom();
isGrayscale = mode ? grayscale : false;
mouseFollowerHorizontal->setVisible(!mode);
mouseFollowerVertical->setVisible(!mode);

View file

@ -71,6 +71,7 @@ public:
};
ProfileWidget2(QWidget *parent = 0);
void resetZoom();
void plotDive(struct dive *d = 0, bool force = false);
virtual bool eventFilter(QObject *, QEvent *);
void setupItem(AbstractProfilePolygonItem *item, DiveCartesianAxis *hAxis, DiveCartesianAxis *vAxis, DivePlotDataModel *model, int vData, int hData, int zValue);