Browse Source

[OSX] ensure window state is obeyed.

pull/8154/head
Dan Walmsley 4 years ago
parent
commit
3faebf205a
  1. 7
      native/Avalonia.Native/src/OSX/AvnWindow.mm
  2. 2
      native/Avalonia.Native/src/OSX/WindowBaseImpl.h
  3. 6
      native/Avalonia.Native/src/OSX/WindowBaseImpl.mm
  4. 6
      native/Avalonia.Native/src/OSX/WindowImpl.mm

7
native/Avalonia.Native/src/OSX/AvnWindow.mm

@ -199,6 +199,8 @@
[self backingScaleFactor];
}
- (void)windowWillClose:(NSNotification *)notification
{
_closed = true;
@ -380,6 +382,11 @@
if(cparent != nullptr)
{
if(!cparent->IsShown())
{
return;
}
if(cparent->WindowState() == Maximized)
{
cparent->SetWindowState(Normal);

2
native/Avalonia.Native/src/OSX/WindowBaseImpl.h

@ -60,6 +60,8 @@ BEGIN_INTERFACE_MAP()
virtual HRESULT Show(bool activate, bool isDialog) override;
virtual bool IsShown ();
virtual bool ShouldTakeFocusOnShow();
virtual HRESULT Hide() override;

6
native/Avalonia.Native/src/OSX/WindowBaseImpl.mm

@ -116,6 +116,11 @@ HRESULT WindowBaseImpl::Show(bool activate, bool isDialog) {
}
}
bool WindowBaseImpl::IsShown ()
{
return _shown;
}
bool WindowBaseImpl::ShouldTakeFocusOnShow() {
return true;
}
@ -567,7 +572,6 @@ void WindowBaseImpl::InitialiseNSWindow() {
[Window setContentMaxSize:lastMaxSize];
[Window setOpaque:false];
[Window center];
if (lastMenu != nullptr) {

6
native/Avalonia.Native/src/OSX/WindowImpl.mm

@ -430,6 +430,9 @@ HRESULT WindowImpl::SetWindowState(AvnWindowState state) {
START_COM_CALL;
@autoreleasepool {
auto currentState = _actualWindowState;
_lastWindowState = state;
if (Window == nullptr) {
return S_OK;
}
@ -440,9 +443,6 @@ HRESULT WindowImpl::SetWindowState(AvnWindowState state) {
_inSetWindowState = true;
auto currentState = _actualWindowState;
_lastWindowState = state;
if (currentState == Normal) {
_preZoomSize = [Window frame];
}

Loading…
Cancel
Save