diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2020-03-24 15:02:17 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-03-25 09:28:05 -0700 |
commit | 6629d046b713e27a85ce2ba69b436629ddcf9804 (patch) | |
tree | 35fb519eedbf2e7e7200ed464eea9842945b5b15 | |
parent | 577f713f1aece8328a5ff7cca9a0d14ab543c4d4 (diff) | |
download | subsurface-6629d046b713e27a85ce2ba69b436629ddcf9804.tar.gz |
mobile/profile: adjust offsets when scaling
If the user is scaling out again we need to make sure that our offsets
are adjusted so that we always show a subset of the profile and not
'empty space' outside of it. Instead of reimplementing the offset logic,
let's just trigger another paint() call.
This requires a trampoline function because of different signal and slot
signatures.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | profile-widget/qmlprofile.cpp | 11 | ||||
-rw-r--r-- | profile-widget/qmlprofile.h | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/profile-widget/qmlprofile.cpp b/profile-widget/qmlprofile.cpp index 08f5836af..ca0293c3c 100644 --- a/profile-widget/qmlprofile.cpp +++ b/profile-widget/qmlprofile.cpp @@ -24,9 +24,20 @@ QMLProfile::QMLProfile(QQuickItem *parent) : m_profileWidget->setPrintMode(true); m_profileWidget->setFontPrintScale(fontScale); connect(QMLManager::instance(), &QMLManager::sendScreenChanged, this, &QMLProfile::screenChanged); + connect(this, &QMLProfile::scaleChanged, this, &QMLProfile::triggerUpdate); setDevicePixelRatio(QMLManager::instance()->lastDevicePixelRatio()); } +// we need this so we can connect update() to the scaleChanged() signal - which the connect above cannot do +// directly as it chokes on the default parameter for update(). +// If the scale changes we may need to change our offsets to ensure that we still only show a subset of +// the profile and not empty space around it, which the paint() method below will take care of, which will +// eventually get called after we call update() +void QMLProfile::triggerUpdate() +{ + update(); +} + void QMLProfile::paint(QPainter *painter) { QElapsedTimer timer; diff --git a/profile-widget/qmlprofile.h b/profile-widget/qmlprofile.h index 2798fa733..15bfac0c0 100644 --- a/profile-widget/qmlprofile.h +++ b/profile-widget/qmlprofile.h @@ -28,6 +28,8 @@ public: public slots: void setMargin(int margin); void screenChanged(QScreen *screen); + void triggerUpdate(); + private: int m_diveId; qreal m_devicePixelRatio; |