From cce425b8dae0474528d93e7379939c69ca21eab3 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 16 Dec 2021 12:17:13 +0000 Subject: [PATCH 1/4] fix red shown during resizing catalina. --- native/Avalonia.Native/src/OSX/window.mm | 1 - 1 file changed, 1 deletion(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 16f49b8e26..f5253fbef2 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -328,7 +328,6 @@ public: BaseEvents->Resized(AvnSize{x,y}, reason); } - [StandardContainer setFrameSize:NSSize{x,y}]; [Window setContentSize:NSSize{x, y}]; } @finally From 06807324d022da8a5031991e5d6082440e22d2c5 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 17 Dec 2021 13:09:27 +0000 Subject: [PATCH 2/4] [OSX] fix resize calls before window shown. --- native/Avalonia.Native/src/OSX/window.mm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index f5253fbef2..5d697cc0ec 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -27,6 +27,7 @@ public: AvnPoint lastPositionSet; NSString* _lastTitle; IAvnMenu* _mainMenu; + NSSize _lastSize; bool _shown; bool _inResize; @@ -35,6 +36,7 @@ public: { _shown = false; _inResize = false; + _lastSize = NSSize { 0, 0 }; _mainMenu = nullptr; BaseEvents = events; _glContext = gl; @@ -226,9 +228,17 @@ public: if(ret == nullptr) return E_POINTER; - auto frame = [View frame]; - ret->Width = frame.size.width; - ret->Height = frame.size.height; + if(!_shown) + { + ret->Width = _lastSize.width; + ret->Height = _lastSize.height; + } + else + { + auto frame = [View frame]; + ret->Width = frame.size.width; + ret->Height = frame.size.height; + } return S_OK; } @@ -323,6 +333,8 @@ public: @try { + _lastSize = NSSize{x,y}; + if(!_shown) { BaseEvents->Resized(AvnSize{x,y}, reason); From 0a65e0a50d433588f77d24edea90d20c10149bff Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 17 Dec 2021 16:25:14 +0000 Subject: [PATCH 3/4] forcefully invalidate shadow. --- native/Avalonia.Native/src/OSX/window.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 5d697cc0ec..3ee9e2214c 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -45,6 +45,7 @@ public: StandardContainer = [[AutoFitContentView new] initWithContent:View]; Window = [[AvnWindow alloc] initWithParent:this]; + [Window setContentView: StandardContainer]; lastPositionSet.X = 100; lastPositionSet.Y = 100; @@ -126,8 +127,6 @@ public: SetPosition(lastPositionSet); UpdateStyle(); - [Window setContentView: StandardContainer]; - [Window setTitle:_lastTitle]; if(ShouldTakeFocusOnShow() && activate) @@ -340,7 +339,8 @@ public: BaseEvents->Resized(AvnSize{x,y}, reason); } - [Window setContentSize:NSSize{x, y}]; + [Window setContentSize:NSSize{x,y}]; + [Window invalidateShadow]; } @finally { From 54e4f13ea6fd90d99416bcd039d0e522fbfcbe3c Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 17 Dec 2021 16:30:47 +0000 Subject: [PATCH 4/4] Revert "[OSX] fix resize calls before window shown." This reverts commit 06807324d022da8a5031991e5d6082440e22d2c5. --- native/Avalonia.Native/src/OSX/window.mm | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 3ee9e2214c..0b88908252 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -27,7 +27,6 @@ public: AvnPoint lastPositionSet; NSString* _lastTitle; IAvnMenu* _mainMenu; - NSSize _lastSize; bool _shown; bool _inResize; @@ -36,7 +35,6 @@ public: { _shown = false; _inResize = false; - _lastSize = NSSize { 0, 0 }; _mainMenu = nullptr; BaseEvents = events; _glContext = gl; @@ -227,17 +225,9 @@ public: if(ret == nullptr) return E_POINTER; - if(!_shown) - { - ret->Width = _lastSize.width; - ret->Height = _lastSize.height; - } - else - { - auto frame = [View frame]; - ret->Width = frame.size.width; - ret->Height = frame.size.height; - } + auto frame = [View frame]; + ret->Width = frame.size.width; + ret->Height = frame.size.height; return S_OK; } @@ -332,8 +322,6 @@ public: @try { - _lastSize = NSSize{x,y}; - if(!_shown) { BaseEvents->Resized(AvnSize{x,y}, reason);