Browse Source

[OSX] borderless window can transistion from FullScreen to Maximised correctly.

pull/3849/head
Dan Walmsley 6 years ago
parent
commit
24dd2b4459
  1. 2
      native/Avalonia.Native/src/OSX/window.h
  2. 17
      native/Avalonia.Native/src/OSX/window.mm

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

@ -37,6 +37,8 @@ struct IWindowStateChanged
virtual void WindowStateChanged () = 0; virtual void WindowStateChanged () = 0;
virtual void StartStateTransition () = 0; virtual void StartStateTransition () = 0;
virtual void EndStateTransition () = 0; virtual void EndStateTransition () = 0;
virtual SystemDecorations Decorations () = 0;
virtual AvnWindowState WindowState () = 0;
}; };
#endif /* window_h */ #endif /* window_h */

17
native/Avalonia.Native/src/OSX/window.mm

@ -499,6 +499,16 @@ private:
_transitioningWindowState = false; _transitioningWindowState = false;
} }
SystemDecorations Decorations () override
{
return _decorations;
}
AvnWindowState WindowState () override
{
return _lastWindowState;
}
void WindowStateChanged () override void WindowStateChanged () override
{ {
if(!_inSetWindowState && !_transitioningWindowState) if(!_inSetWindowState && !_transitioningWindowState)
@ -1587,6 +1597,13 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent
if(parent != nullptr) if(parent != nullptr)
{ {
parent->EndStateTransition(); parent->EndStateTransition();
if(parent->Decorations() != SystemDecorationsFull && parent->WindowState() == Maximized)
{
NSRect screenRect = [[self screen] visibleFrame];
[self setFrame:screenRect display:YES];
}
parent->WindowStateChanged(); parent->WindowStateChanged();
} }
} }

Loading…
Cancel
Save