diff --git a/native/Avalonia.Native/src/OSX/window.h b/native/Avalonia.Native/src/OSX/window.h index b13a103d25..0ab693a8e4 100644 --- a/native/Avalonia.Native/src/OSX/window.h +++ b/native/Avalonia.Native/src/OSX/window.h @@ -29,7 +29,8 @@ class WindowBaseImpl; -(void) showWindowMenuWithAppMenu; -(void) applyMenu:(NSMenu* _Nullable)menu; -(double) getScaling; --(double) getTitleBarHeight; +-(double) getExtendedTitleBarHeight; +-(void) setIsExtended:(bool)value; @end struct INSWindowHolder diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index 96bcdf4e09..19892c290d 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -35,7 +35,7 @@ public: View = NULL; Window = NULL; } - NSVisualEffectView* VisualEffect; + AutoFitContentVisualEffectView* VisualEffect; AvnView* View; AvnWindow* Window; ComPtr BaseEvents; @@ -826,6 +826,8 @@ private: View.layer.zPosition = 0; } + [Window setIsExtended:enable]; + UpdateStyle(); return S_OK; @@ -846,7 +848,7 @@ private: return E_POINTER; } - *ret = [Window getTitleBarHeight]; + *ret = [Window getExtendedTitleBarHeight]; return S_OK; } @@ -1049,14 +1051,21 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent } } +-(void)updateSize +{ + [self setFrameSize:self.frame.size]; +} + -(void)setFrameSize:(NSSize)newSize { [super setFrameSize:newSize]; [_content setFrameSize:newSize]; + auto window = objc_cast([self window]); + // TODO get actual titlebar size - float height = 38; + double height = [window getExtendedTitleBarHeight]; NSRect tbar; tbar.origin.x = 0; tbar.origin.y = newSize.height - height; @@ -1595,28 +1604,41 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent bool _canBecomeKeyAndMain; bool _closed; bool _isEnabled; + bool _isExtended; AvnMenu* _menu; double _lastScaling; } +-(void) setIsExtended:(bool)value; +{ + _isExtended = value; +} + -(double) getScaling { return _lastScaling; } --(double) getTitleBarHeight +-(double) getExtendedTitleBarHeight { - for (id subview in self.contentView.superview.subviews) - { - if ([subview isKindOfClass:NSClassFromString(@"NSTitlebarContainerView")]) - { - NSView *titlebarView = [subview subviews][0]; - - return (double)titlebarView.frame.size.height; - } - } - - return -1; + if(_isExtended) + { + for (id subview in self.contentView.superview.subviews) + { + if ([subview isKindOfClass:NSClassFromString(@"NSTitlebarContainerView")]) + { + NSView *titlebarView = [subview subviews][0]; + + return (double)titlebarView.frame.size.height; + } + } + + return -1; + } + else + { + return 0; + } } +(void)closeAll @@ -1737,6 +1759,7 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent [self setOpaque:NO]; [self setBackgroundColor: [NSColor clearColor]]; [self invalidateShadow]; + _isExtended = false; return self; }