Revision: 26274 http://sourceforge.net/p/bibdesk/svn/26274 Author: hofman Date: 2021-06-21 09:21:48 +0000 (Mon, 21 Jun 2021) Log Message: ----------- Convenience methods to get a particular constraint from a view
Modified Paths: -------------- trunk/bibdesk/BDSKBookmarkController.m trunk/bibdesk/BDSKFilterController.m trunk/bibdesk/BDSKSearchBookmarkController.m trunk/bibdesk/BDSKStatusBar.m trunk/bibdesk/NSView_BDSKExtensions.h trunk/bibdesk/NSView_BDSKExtensions.m Modified: trunk/bibdesk/BDSKBookmarkController.m =================================================================== --- trunk/bibdesk/BDSKBookmarkController.m 2021-06-21 06:30:23 UTC (rev 26273) +++ trunk/bibdesk/BDSKBookmarkController.m 2021-06-21 09:21:48 UTC (rev 26274) @@ -49,6 +49,7 @@ #import "NSURL_BDSKExtensions.h" #import "NSPasteboard_BDSKExtensions.h" #import "NSAnimationContext_BDSKExtensions.h" +#import "NSView_BDSKExtensions.h" #define BDSKBookmarksWindowFrameAutosaveName @"BDSKBookmarksWindow" @@ -628,14 +629,8 @@ NSTableCellView *view = [ov makeViewWithIdentifier:identifier owner:self]; if (!RUNNING_AFTER(10_15)) { BOOL isLast = [[tableColumn identifier] isEqualToString:@"url"]; - if (isLast || isSep) { - for (NSLayoutConstraint *constraint in [view constraints]) { - if ([constraint firstAttribute] == NSLayoutAttributeTrailing) { - [constraint setConstant:isSep == NO ? 4.0 : isLast ? 2.0 : 0.0]; - break; - } - } - } + if (isLast || isSep) + [[view constraintWithFirstItem:view firstAttribute:NSLayoutAttributeTrailing] setConstant:isSep == NO ? 4.0 : isLast ? 2.0 : 0.0]; } if ([identifier isEqualToString:@"url"]) [[view textField] setEnabled:[item bookmarkType] == BDSKBookmarkTypeBookmark]; Modified: trunk/bibdesk/BDSKFilterController.m =================================================================== --- trunk/bibdesk/BDSKFilterController.m 2021-06-21 06:30:23 UTC (rev 26273) +++ trunk/bibdesk/BDSKFilterController.m 2021-06-21 09:21:48 UTC (rev 26274) @@ -41,6 +41,7 @@ #import "NSWindowController_BDSKExtensions.h" #import "NSInvocation_BDSKExtensions.h" #import "BDSKTouchBarButtonGroup.h" +#import "NSView_BDSKExtensions.h" #define MAX_HEIGHT 320.0 #define SCROLLVIEW_MARGIN 8.0 @@ -194,9 +195,7 @@ NSView *prevView = idx == 0 ? nil : [subviews objectAtIndex:idx - 1]; NSView *nextView = idx == [subviews count] ? nil : [subviews objectAtIndex:idx]; - NSLayoutConstraint *heightConstraint = nil; - for (heightConstraint in [view constraints]) - if ([heightConstraint firstAttribute] == NSLayoutAttributeHeight) break; + NSLayoutConstraint *heightConstraint = [view constraintWithFirstItem:view firstAttribute:NSLayoutAttributeHeight]; CGFloat height = [heightConstraint constant]; [heightConstraint setConstant:0.0]; @@ -203,19 +202,13 @@ [conditionsView addSubview:view positioned:prevView ? NSWindowAbove : NSWindowBelow relativeTo:prevView]; if (nextView) { - for (NSLayoutConstraint *constraint in [conditionsView constraints]) { - if ([constraint firstItem] == nextView && [constraint firstAttribute] == NSLayoutAttributeTop) { - [conditionsView removeConstraint:constraint]; - break; - } - } + NSLayoutConstraint *topConstraint = [conditionsView constraintWithFirstItem:nextView firstAttribute:NSLayoutAttributeTop]; + if (topConstraint) + [conditionsView removeConstraint:topConstraint]; } else if (prevView) { - for (NSLayoutConstraint *constraint in [conditionsView constraints]) { - if ([constraint secondItem] == prevView && [constraint secondAttribute] == NSLayoutAttributeBottom) { - [conditionsView removeConstraint:constraint]; - break; - } - } + NSLayoutConstraint *bottomConstraint = [conditionsView constraintWithFirstItem:prevView firstAttribute:NSLayoutAttributeBottom]; + if (bottomConstraint) + [conditionsView removeConstraint:bottomConstraint]; } [conditionsView addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:conditionsView attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0]]; [conditionsView addConstraint:[NSLayoutConstraint constraintWithItem:conditionsView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:view attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0.0]]; @@ -249,9 +242,7 @@ if (idx != NSNotFound) { NSView *prevView = idx == 0 ? nil : [subviews objectAtIndex:idx - 1]; NSView *nextView = idx + 1 == [subviews count] ? nil : [subviews objectAtIndex:idx + 1]; - NSLayoutConstraint *heightConstraint = nil; - for (heightConstraint in [view constraints]) - if ([heightConstraint firstAttribute] == NSLayoutAttributeHeight) break; + NSLayoutConstraint *heightConstraint = [view constraintWithFirstItem:view firstAttribute:NSLayoutAttributeHeight]; CGFloat height = [heightConstraint constant]; [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){ Modified: trunk/bibdesk/BDSKSearchBookmarkController.m =================================================================== --- trunk/bibdesk/BDSKSearchBookmarkController.m 2021-06-21 06:30:23 UTC (rev 26273) +++ trunk/bibdesk/BDSKSearchBookmarkController.m 2021-06-21 09:21:48 UTC (rev 26274) @@ -45,6 +45,7 @@ #import "BDSKOutlineView.h" #import "NSWindowController_BDSKExtensions.h" #import "NSAnimationContext_BDSKExtensions.h" +#import "NSView_BDSKExtensions.h" #define BDSKSearchBookmarksWindowFrameAutosaveName @"BDSKSearchBookmarksWindow" @@ -504,14 +505,8 @@ NSTableCellView *view = [ov makeViewWithIdentifier:identifier owner:self]; if (!RUNNING_AFTER(10_15)) { BOOL isLast = [[tableColumn identifier] isEqualToString:@"server"]; - if (isLast || isSep) { - for (NSLayoutConstraint *constraint in [view constraints]) { - if ([constraint firstAttribute] == NSLayoutAttributeTrailing) { - [constraint setConstant:isSep == NO ? 4.0 : isLast ? 2.0 : 0.0]; - break; - } - } - } + if (isLast || isSep) + [[view constraintWithFirstItem:view firstAttribute:NSLayoutAttributeTrailing] setConstant:isSep == NO ? 4.0 : isLast ? 2.0 : 0.0]; } if ([identifier isEqualToString:@"server"]) [[view textField] setEnabled:[item bookmarkType] == BDSKSearchBookmarkTypeBookmark]; Modified: trunk/bibdesk/BDSKStatusBar.m =================================================================== --- trunk/bibdesk/BDSKStatusBar.m 2021-06-21 06:30:23 UTC (rev 26273) +++ trunk/bibdesk/BDSKStatusBar.m 2021-06-21 09:21:48 UTC (rev 26274) @@ -129,16 +129,8 @@ NSView *contentView = [view superview]; BOOL visible = (nil == [self superview]); NSView *bottomView = visible ? view : self; - NSLayoutConstraint *bottomConstraint = nil; + NSLayoutConstraint *bottomConstraint = [contentView constraintWithSecondItem:bottomView secondAttribute:NSLayoutAttributeBottom]; - for (NSLayoutConstraint *constraint in [contentView constraints]) { - if (([constraint firstItem] == bottomView && [constraint firstAttribute] == NSLayoutAttributeBottom) || - ([constraint secondItem] == bottomView && [constraint secondAttribute] == NSLayoutAttributeBottom)) { - bottomConstraint = constraint; - break; - } - } - CGFloat statusHeight = NSHeight([self frame]); NSMutableArray *constraints = [NSMutableArray array]; @@ -159,7 +151,7 @@ if (duration > 0.0) { animating = YES; - CGFloat target = visible ? 0.0 : [bottomConstraint firstItem] == self ? statusHeight : -statusHeight; + CGFloat target = visible ? 0.0 : statusHeight; [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){ [context setDuration:duration]; [[bottomConstraint animator] setConstant:target]; Modified: trunk/bibdesk/NSView_BDSKExtensions.h =================================================================== --- trunk/bibdesk/NSView_BDSKExtensions.h 2021-06-21 06:30:23 UTC (rev 26273) +++ trunk/bibdesk/NSView_BDSKExtensions.h 2021-06-21 09:21:48 UTC (rev 26274) @@ -78,4 +78,7 @@ - (NSScrollView *)enclosedScrollView; +- (NSLayoutConstraint *)constraintWithFirstItem:(id)item firstAttribute:(NSLayoutAttribute)attribute; +- (NSLayoutConstraint *)constraintWithSecondItem:(id)item secondAttribute:(NSLayoutAttribute)attribute; + @end Modified: trunk/bibdesk/NSView_BDSKExtensions.m =================================================================== --- trunk/bibdesk/NSView_BDSKExtensions.m 2021-06-21 06:30:23 UTC (rev 26273) +++ trunk/bibdesk/NSView_BDSKExtensions.m 2021-06-21 09:21:48 UTC (rev 26274) @@ -161,6 +161,22 @@ return nil; } +- (NSLayoutConstraint *)constraintWithFirstItem:(id)item firstAttribute:(NSLayoutAttribute)attribute { + for (NSLayoutConstraint *constraint in [self constraints]) { + if ([constraint firstItem] == item && [constraint firstAttribute] == attribute) + return constraint; + } + return nil; +} + +- (NSLayoutConstraint *)constraintWithSecondItem:(id)item secondAttribute:(NSLayoutAttribute)attribute { + for (NSLayoutConstraint *constraint in [self constraints]) { + if ([constraint secondItem] == item && [constraint secondAttribute] == attribute) + return constraint; + } + return nil; +} + @end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit