Browse Source

clear layout jobs instead of explicit layout call.

pull/8305/head
Dan Walmsley 4 years ago
parent
commit
51d158dc1b
  1. 7
      src/Avalonia.Controls/TopLevel.cs
  2. 7
      src/Avalonia.Controls/WindowBase.cs

7
src/Avalonia.Controls/TopLevel.cs

@ -13,6 +13,7 @@ using Avalonia.Media;
using Avalonia.Platform;
using Avalonia.Rendering;
using Avalonia.Styling;
using Avalonia.Threading;
using Avalonia.Utilities;
using Avalonia.VisualTree;
@ -412,7 +413,11 @@ namespace Avalonia.Controls
FrameSize = PlatformImpl!.FrameSize;
Width = clientSize.Width;
Height = clientSize.Height;
LayoutManager.ExecuteLayoutPass();
// Setting ClientSize and Width / Height above caused ExecuteLayoutPass to be queued.
// Instead of explicitly calling LayoutManager.ExecuteLayoutPass here, we clear the job queue.
Dispatcher.UIThread.RunJobs(DispatcherPriority.Layout);
Renderer?.Resized(clientSize);
}

7
src/Avalonia.Controls/WindowBase.cs

@ -8,6 +8,7 @@ using Avalonia.Controls.Primitives;
using Avalonia.Input;
using Avalonia.Layout;
using Avalonia.Platform;
using Avalonia.Threading;
using JetBrains.Annotations;
namespace Avalonia.Controls
@ -219,7 +220,11 @@ namespace Avalonia.Controls
{
ClientSize = clientSize;
FrameSize = PlatformImpl?.FrameSize;
LayoutManager.ExecuteLayoutPass();
// Setting ClientSize and Width / Height above caused ExecuteLayoutPass to be queued.
// Instead of explicitly calling LayoutManager.ExecuteLayoutPass here, we clear the job queue.
Dispatcher.UIThread.RunJobs(DispatcherPriority.Layout);
Renderer?.Resized(clientSize);
}

Loading…
Cancel
Save