From 79979b60c7c3cd17ffe62f2df21a6026ea52135a Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 12 Jul 2017 18:26:05 +0100 Subject: [PATCH] Remove contents margins from sizehint when preserving aspect ratio * This prevents a feedback loop where the label resizes wider to make room for the margins, then the margins get bigger to keep the image centred/scaled properly, etc. --- qrenderdoc/Widgets/Extended/RDLabel.cpp | 20 ++++++++++++++++++++ qrenderdoc/Widgets/Extended/RDLabel.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/qrenderdoc/Widgets/Extended/RDLabel.cpp b/qrenderdoc/Widgets/Extended/RDLabel.cpp index 4b1707bcd..a89234707 100644 --- a/qrenderdoc/Widgets/Extended/RDLabel.cpp +++ b/qrenderdoc/Widgets/Extended/RDLabel.cpp @@ -33,6 +33,26 @@ RDLabel::~RDLabel() { } +QSize RDLabel::sizeHint() const +{ + QSize sz = QLabel::sizeHint(); + + if(m_preserveRatio) + sz.setWidth(sz.width() - contentsMargins().left() - contentsMargins().right()); + + return sz; +} + +QSize RDLabel::minimumSizeHint() const +{ + QSize sz = QLabel::minimumSizeHint(); + + if(m_preserveRatio) + sz.setWidth(sz.width() - contentsMargins().left() - contentsMargins().right()); + + return sz; +} + void RDLabel::mousePressEvent(QMouseEvent *event) { emit(clicked(event)); diff --git a/qrenderdoc/Widgets/Extended/RDLabel.h b/qrenderdoc/Widgets/Extended/RDLabel.h index fc484bbd8..fb732b5e0 100644 --- a/qrenderdoc/Widgets/Extended/RDLabel.h +++ b/qrenderdoc/Widgets/Extended/RDLabel.h @@ -33,6 +33,9 @@ public: explicit RDLabel(QWidget *parent = 0); ~RDLabel(); + QSize sizeHint() const override; + QSize minimumSizeHint() const override; + void setPreserveAspectRatio(bool preserve) { m_preserveRatio = preserve; } bool preserveAspectRatio() { return m_preserveRatio; } signals: