diff --git a/ui/widgets/separate_panel.cpp b/ui/widgets/separate_panel.cpp index 10abfe7d..f8d00333 100644 --- a/ui/widgets/separate_panel.cpp +++ b/ui/widgets/separate_panel.cpp @@ -788,13 +788,13 @@ void SeparatePanel::focusInEvent(QFocusEvent *e) { }); } -void SeparatePanel::setInnerSize(QSize size) { +void SeparatePanel::setInnerSize(QSize size, bool fixed) { Expects(!size.isEmpty()); if (rect().isEmpty()) { - initGeometry(size); + initGeometry(size, fixed); } else { - updateGeometry(size); + updateGeometry(size, fixed); } } @@ -802,7 +802,7 @@ QRect SeparatePanel::innerGeometry() const { return _body->geometry(); } -void SeparatePanel::initGeometry(QSize size) { +void SeparatePanel::initGeometry(QSize size, bool fixed) { const auto active = QApplication::activeWindow(); const auto available = !active ? QGuiApplication::primaryScreen()->availableGeometry() @@ -847,14 +847,24 @@ void SeparatePanel::initGeometry(QSize size) { return initRect.translated(center - initRect.center()).marginsAdded(_padding); }(); move(rect.topLeft()); - setFixedSize(rect.size()); + if (fixed) { + setFixedSize(rect.size()); + } else { + resize(rect.size()); + } updateControlsGeometry(); } -void SeparatePanel::updateGeometry(QSize size) { - setFixedSize( - _padding.left() + size.width() + _padding.right(), - _padding.top() + size.height() + _padding.bottom()); +void SeparatePanel::updateGeometry(QSize size, bool fixed) { + if (fixed) { + setFixedSize( + _padding.left() + size.width() + _padding.right(), + _padding.top() + size.height() + _padding.bottom()); + } else { + resize( + _padding.left() + size.width() + _padding.right(), + _padding.top() + size.height() + _padding.bottom()); + } updateControlsGeometry(); update(); } diff --git a/ui/widgets/separate_panel.h b/ui/widgets/separate_panel.h index 5cca3f4c..e6931035 100644 --- a/ui/widgets/separate_panel.h +++ b/ui/widgets/separate_panel.h @@ -58,7 +58,7 @@ class SeparatePanel final : public RpWidget { void setTitle(rpl::producer title); void setTitleHeight(int height); - void setInnerSize(QSize size); + void setInnerSize(QSize size, bool fixed = true); [[nodiscard]] QRect innerGeometry() const; void setHideOnDeactivate(bool hideOnDeactivate); @@ -118,8 +118,8 @@ class SeparatePanel final : public RpWidget { private: void initControls(); void initLayout(const SeparatePanelArgs &args); - void initGeometry(QSize size); - void updateGeometry(QSize size); + void initGeometry(QSize size, bool fixed = true); + void updateGeometry(QSize size, bool fixed = true); void showControls(); void updateControlsGeometry(); void validateBorderImage();