From 43919f90c7038857ce14c8c84550727a41a6a179 Mon Sep 17 00:00:00 2001 From: Vitaly Zdanevich Date: Wed, 24 Jun 2026 09:55:02 +0400 Subject: [PATCH] Recenter boxes after dimension changes Keep centered box layers horizontally centered when content updates its dimensions, matching the existing vertical recentering path. Co-authored-by: OpenAI ChatGPT --- ui/layers/box_layer_widget.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ui/layers/box_layer_widget.cpp b/ui/layers/box_layer_widget.cpp index 951997d7..1c7d6d21 100644 --- a/ui/layers/box_layer_widget.cpp +++ b/ui/layers/box_layer_widget.cpp @@ -418,18 +418,20 @@ void BoxLayerWidget::setDimensions( resize(newWidth, countRealHeight()); auto newGeometry = geometry(); auto parentHeight = parent->height(); + const auto newLeft = (parent->width() - newGeometry.width()) / 2; + auto newTop = newGeometry.top(); const auto bottomMargin = st().margin.bottom(); if (newGeometry.top() + newGeometry.height() + bottomMargin > parentHeight || forceCenterPosition) { const auto top1 = parentHeight - bottomMargin - newGeometry.height(); const auto top2 = (parentHeight - newGeometry.height()) / 2; - const auto newTop = forceCenterPosition + newTop = forceCenterPosition ? std::min(top1, top2) : std::max(top1, top2); - if (newTop != newGeometry.top()) { - move(newGeometry.left(), newTop); - resizeEvent(0); - } + } + if (newLeft != newGeometry.left() || newTop != newGeometry.top()) { + move(newLeft, newTop); + resizeEvent(0); } parent->update(oldGeometry.united(geometry()).marginsAdded(st::boxRoundShadow.extend)); } else {