Fix panel scroll bars update to be performed once again if controls are gets changed during layout

#3470 #3486
This commit is contained in:
Wojtek Figat
2025-06-02 13:40:27 +02:00
parent eb90ab84f2
commit 1d0a0a409d

View File

@@ -20,6 +20,7 @@ namespace FlaxEngine.GUI
private Color _scrollbarTrackColor;
private Color _scrollbarThumbColor;
private Color _scrollbarThumbSelectedColor;
private Rectangle _controlsBoundsBeforeLayout;
/// <summary>
/// The cached scroll area bounds. Used to scroll contents of the panel control. Cached during performing layout.
@@ -530,8 +531,25 @@ namespace FlaxEngine.GUI
{
// Arrange controls and get scroll bounds
ArrangeAndGetBounds();
UpdateScrollBars();
_controlsBoundsBeforeLayout = _controlsBounds;
}
// Update scroll bars
/// <inheritdoc />
protected override void PerformLayoutAfterChildren()
{
// If controls area changed during layout then update scroll bars again
ArrangeAndGetBounds();
if (_controlsBoundsBeforeLayout != _controlsBounds)
{
UpdateScrollBars();
}
base.PerformLayoutAfterChildren();
}
private void UpdateScrollBars()
{
var controlsBounds = _controlsBounds;
var scrollBounds = controlsBounds;
_scrollMargin.ExpandRectangle(ref scrollBounds);