Allow popover to be dismissed

This commit is contained in:
Gregory John Casamento 2023-10-01 06:56:53 -04:00
parent bcc8011580
commit 24eee8e7dd
3 changed files with 29 additions and 9 deletions

View file

@ -45,11 +45,14 @@ APPKIT_EXPORT_CLASS
id _sourceController;
id _destinationController;
NSStoryboardSegueIdentifier _identifier;
NSString *_kind;
NSString *_relationship;
id _popoverAnchorView;
NSPopoverBehavior _popoverBehavior;
NSPopover *_popover;
NSRectEdge _preferredEdge;
GSStoryboardSeguePerformHandler _handler;
}

View file

@ -232,12 +232,16 @@
{
[_realPanel close];
[_realPanel setDelegate:nil];
[_realPanel orderOut: nil];
_shown = NO;
}
- (IBAction) performClose: (id)sender
{
[_realPanel performClose:sender];
[_realPanel setDelegate:nil];
[_realPanel performClose: sender];
[_realPanel setDelegate: nil];
[_realPanel orderOut: nil];
_shown = NO;
}
- (void) showRelativeToRect: (NSRect)positioningRect

View file

@ -172,14 +172,27 @@
}
else if ([_kind isEqualToString: @"popover"])
{
NSPopover *po = [[NSPopover alloc] init];
NSRect rect = [_popoverAnchorView frame];
if (_popover == nil)
{
NSPopover *po = [[NSPopover alloc] init];
NSRect rect = [_popoverAnchorView frame];
[po setBehavior: _popoverBehavior];
[po setContentViewController: _destinationController];
[po showRelativeToRect: rect
ofView: _popoverAnchorView
preferredEdge: _preferredEdge];
_popover = po; // weak... since we manually release...
[po setBehavior: _popoverBehavior];
[po setContentViewController: _destinationController];
[po showRelativeToRect: rect
ofView: _popoverAnchorView
preferredEdge: _preferredEdge];
}
else
{
if ([_popover behavior] == NSPopoverBehaviorTransient)
{
[_popover close];
RELEASE(_popover);
_popover = nil;
}
}
}
else if ([_kind isEqualToString: @"sheet"])
{