From 7b15ebf5e85ee1311e9cf9127d7591d10910555d Mon Sep 17 00:00:00 2001 From: cneben Date: Fri, 8 Dec 2023 20:21:57 +0100 Subject: [PATCH] Backport bottom right resizer fix to bottom / right resizers. Signed-off-by: cneben --- src/qanBottomResizer.cpp | 7 +++++-- src/qanBottomRightResizer.cpp | 1 - src/qanRightResizer.cpp | 5 ++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/qanBottomResizer.cpp b/src/qanBottomResizer.cpp index 8b69405b..11bade52 100644 --- a/src/qanBottomResizer.cpp +++ b/src/qanBottomResizer.cpp @@ -195,9 +195,12 @@ void BottomResizer::mouseMoveEvent(QMouseEvent* event) if (_target != nullptr) { const qreal targetHeight = _targetInitialSize.height() + delta.y(); - const auto targetContentMinHeight = _targetContent ? _targetContent->childrenRect().y() + _targetContent->childrenRect().height() : 0; + auto childrenRect = _targetContent->childrenRect(); + if (childrenRect.size().isEmpty()) // Note 20231208: Fix a nasty bug (Qt 5.15.13 ?) where size() is empty when there + childrenRect = QRectF{}; // is no longer any childs but rect position is left with invalid value. + const auto targetContentMinHeight = _targetContent ? childrenRect.y() + childrenRect.height() : 0; const auto minimumTargetHeight = qMax(_minimumTargetSize.height(), targetContentMinHeight); - const auto targetContentMinWidth = _targetContent ? _targetContent->childrenRect().x() + _targetContent->childrenRect().width() : 0; + const auto targetContentMinWidth = _targetContent ? childrenRect.x() + childrenRect.width() : 0; const auto minimumTargetWidth = qMax(_minimumTargetSize.width(), targetContentMinWidth); if (targetHeight > minimumTargetHeight) { // Do not resize below minimumTargetSize diff --git a/src/qanBottomRightResizer.cpp b/src/qanBottomRightResizer.cpp index af384aa8..3c413e42 100644 --- a/src/qanBottomRightResizer.cpp +++ b/src/qanBottomRightResizer.cpp @@ -367,7 +367,6 @@ void BottomRightResizer::mouseMoveEvent(QMouseEvent* event) _target->setHeight(targetHeight); } else { const qreal targetHeight = _targetInitialSize.height() + delta.y(); - qWarning() << "targetHeight=" << targetHeight; if (targetHeight > minimumTargetHeight) _target->setHeight(targetHeight); } diff --git a/src/qanRightResizer.cpp b/src/qanRightResizer.cpp index e858c172..75d51511 100644 --- a/src/qanRightResizer.cpp +++ b/src/qanRightResizer.cpp @@ -196,7 +196,10 @@ void RightResizer::mouseMoveEvent(QMouseEvent* event) // Do not resize below minimumSize const qreal targetWidth = _targetInitialSize.width() + delta.x(); - const auto targetContentMinWidth = _targetContent ? _targetContent->childrenRect().x() + _targetContent->childrenRect().width() : 0; + auto childrenRect = _targetContent->childrenRect(); + if (childrenRect.size().isEmpty()) // Note 20231208: Fix a nasty bug (Qt 5.15.13 ?) where size() is empty when there + childrenRect = QRectF{}; // is no longer any childs but rect position is left with invalid value. + const auto targetContentMinWidth = _targetContent ? childrenRect.x() + childrenRect.width() : 0; const auto minimumTargetWidth = qMax(_minimumTargetSize.width(), targetContentMinWidth); if (targetWidth > minimumTargetWidth) {