aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2020-03-24 15:02:17 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-03-25 09:28:05 -0700
commit6629d046b713e27a85ce2ba69b436629ddcf9804 (patch)
tree35fb519eedbf2e7e7200ed464eea9842945b5b15
parent577f713f1aece8328a5ff7cca9a0d14ab543c4d4 (diff)
downloadsubsurface-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.cpp11
-rw-r--r--profile-widget/qmlprofile.h2
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;