Browse Source

Don't allow window zoom when CanResize=false.

Previously, even though the zoom button was disabled the user could still double-click on the title bar to zoom the window. Prevent that by returning the appropriate value from `NSWindow windowShouldZoom` and move the `CanZoom` logic into a central place for use by this method and `UpdateStyle`.
pull/10575/head
Steven Kirk 4 years ago
parent
commit
037ff6d265
  1. 2
      native/Avalonia.Native/src/OSX/AvnWindow.mm
  2. 2
      native/Avalonia.Native/src/OSX/WindowBaseImpl.h
  3. 2
      native/Avalonia.Native/src/OSX/WindowImpl.h
  4. 2
      native/Avalonia.Native/src/OSX/WindowImpl.mm

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

@ -394,7 +394,7 @@
- (BOOL)windowShouldZoom:(NSWindow *_Nonnull)window toFrame:(NSRect)newFrame
{
return true;
return _parent->CanZoom();
}
-(void)windowDidResignKey:(NSNotification *)notification

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

@ -104,6 +104,8 @@ BEGIN_INTERFACE_MAP()
virtual void BringToFront ();
virtual bool CanZoom() { return false; }
protected:
virtual NSWindowStyleMask CalculateStyleMask() = 0;
virtual void UpdateStyle();

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

@ -97,6 +97,8 @@ BEGIN_INTERFACE_MAP()
bool CanBecomeKeyWindow ();
bool CanZoom() override { return _isEnabled && _canResize; }
protected:
virtual NSWindowStyleMask CalculateStyleMask() override;
void UpdateStyle () override;

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

@ -622,5 +622,5 @@ void WindowImpl::UpdateStyle() {
[miniaturizeButton setHidden:!hasTrafficLights];
[miniaturizeButton setEnabled:_isEnabled];
[zoomButton setHidden:!hasTrafficLights];
[zoomButton setEnabled:_isEnabled && _canResize];
[zoomButton setEnabled:CanZoom()];
}

Loading…
Cancel
Save