Use enum instead of string for preferredEdge

This commit is contained in:
Gregory John Casamento 2020-07-28 01:17:42 -04:00
parent 5a0958ec46
commit 52fd3b0cc6
3 changed files with 25 additions and 26 deletions

View file

@ -26,6 +26,7 @@
#define _NSStoryboardSegue_h_GNUSTEP_GUI_INCLUDE
#import <Foundation/NSObject.h>
#import <Foundation/NSGeometry.h>
#if OS_API_VERSION(MAC_OS_X_VERSION_10_10, GS_API_LATEST)
@ -46,7 +47,7 @@ DEFINE_BLOCK_TYPE_NO_ARGS(GSStoryboardSeguePerformHandler, void);
NSString *_relationship;
id _popoverAnchorView;
NSString *_popoverBehavior;
NSString *_preferredEdge;
NSRectEdge _preferredEdge;
GSStoryboardSeguePerformHandler _handler;
}

View file

@ -61,8 +61,8 @@
- (id) _popoverAnchorView;
- (void) _setPopoverBehavior: (NSString *)behavior;
- (NSString *) _popoverBehavior;
- (void) _setPreferredEdge: (NSString *)edge;
- (NSString *) _preferredEdge;
- (void) _setPreferredEdge: (NSRectEdge)edge;
- (NSRectEdge) _preferredEdge;
@end
// this needs to be set on segues
@ -107,9 +107,9 @@
return _popoverBehavior;
}
- (void) _setPreferredEdge: (NSString *)edge
- (void) _setPreferredEdge: (NSRectEdge)edge
{
ASSIGN(_preferredEdge, edge);
_preferredEdge = edge;
}
- (NSString *) _preferredEdge
@ -779,6 +779,23 @@
NSString *pb = [attr stringValue];
attr = [obj attributeForName: @"preferredEdge"];
NSString *pe = [attr stringValue];
NSRectEdge edge = NSMinXEdge;
if ([pe isEqualToString: @"maxY"])
{
edge = NSMaxYEdge;
}
else if ([pe isEqualToString: @"minY"])
{
edge = NSMinYEdge;
}
else if ([pe isEqualToString: @"maxX"])
{
edge = NSMaxXEdge;
}
else if ([pe isEqualToString: @"minX"])
{
edge = NSMinXEdge;
}
[obj detach]; // segue can't be in the archive since it doesn't conform to NSCoding
// Create proxy object to invoke methods on the window controller
@ -821,7 +838,7 @@
[ss _setKind: kind];
[ss _setRelationship: rel];
[ss _setPopoverBehavior: pb];
[ss _setPreferredEdge: pe];
[ss _setPreferredEdge: edge];
// Add to maptable...
[mapTable setObject: ss

View file

@ -174,27 +174,8 @@
{
NSPopover *po = [[NSPopover alloc] init];
NSRect rect = [_popoverAnchorView frame];
NSRectEdge edge = NSMinXEdge;
NSPopoverBehavior behavior = NSPopoverBehaviorApplicationDefined;
// Convert edge...
if ([_preferredEdge isEqualToString: @"maxY"])
{
edge = NSMaxYEdge;
}
else if ([_preferredEdge isEqualToString: @"minY"])
{
edge = NSMinYEdge;
}
else if ([_preferredEdge isEqualToString: @"maxX"])
{
edge = NSMaxXEdge;
}
else if ([_preferredEdge isEqualToString: @"minX"])
{
edge = NSMinXEdge;
}
// Convert behavior
if ([_popoverBehavior isEqualToString: @"a"])
{
@ -212,7 +193,7 @@
[po setContentViewController: _destinationController];
[po showRelativeToRect: rect
ofView: _popoverAnchorView
preferredEdge: edge];
preferredEdge: _preferredEdge];
}
else if ([_kind isEqualToString: @"sheet"])
{