Revision: 25813 http://sourceforge.net/p/bibdesk/svn/25813 Author: hofman Date: 2021-05-01 15:42:38 +0000 (Sat, 01 May 2021) Log Message: ----------- Add constraints to preference view when it uses auto layout
Modified Paths: -------------- trunk/bibdesk/BDSKPreferenceController.m Modified: trunk/bibdesk/BDSKPreferenceController.m =================================================================== --- trunk/bibdesk/BDSKPreferenceController.m 2021-05-01 14:04:24 UTC (rev 25812) +++ trunk/bibdesk/BDSKPreferenceController.m 2021-05-01 15:42:38 UTC (rev 25813) @@ -611,12 +611,21 @@ BOOL wasIcons = [oldView isEqual:[self iconView]]; BOOL isIcons = [view isEqual:[self iconView]]; + NSArray *oontrolsConstraints = nil; NSArray *constraints = nil; if (wasIcons) + oontrolsConstraints = [NSArray arrayWithObjects: + [NSLayoutConstraint constraintWithItem:controlView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0], + [NSLayoutConstraint constraintWithItem:controlView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0.0], + [NSLayoutConstraint constraintWithItem:controlView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0], nil]; + if ([view translatesAutoresizingMaskIntoConstraints] == NO) { constraints = [NSArray arrayWithObjects: - [NSLayoutConstraint constraintWithItem:controlView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0], - [NSLayoutConstraint constraintWithItem:controlView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0.0], - [NSLayoutConstraint constraintWithItem:controlView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0], nil]; + [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0], + [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0], + [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:isIcons ? contentView : controlView attribute:isIcons ? NSLayoutAttributeBottom : NSLayoutAttributeTop multiplier:1.0 constant:0.0], nil]; + if (isIcons == NO) + [[constraints firstObject] setPriority:100.0]; + } NSTimeInterval duration = [NSAnimationContext defaultAnimationTimeInterval]; if (display && duration > 0.0) { @@ -627,7 +636,7 @@ [[controlView animator] removeFromSuperview]; } else if (wasIcons) { [[contentView animator] addSubview:controlView]; - [contentView addConstraints:constraints]; + [contentView addConstraints:oontrolsConstraints]; } if ([oldView superview]) { [[contentView animator] replaceSubview:oldView with:view]; @@ -634,6 +643,8 @@ } else { [[contentView animator] addSubview:view]; } + if (constraints) + [contentView addConstraints:constraints]; [[window animator] setFrame:contentRect display:YES]; } completionHandler:^{ @@ -644,11 +655,13 @@ [controlView removeFromSuperview]; } else if (wasIcons) { [contentView addSubview:controlView]; - [contentView addConstraints:constraints]; + [contentView addConstraints:oontrolsConstraints]; } // don't use replaceSubview:with: because oldView can be nil here [oldView removeFromSuperview]; [contentView addSubview:view]; + if (constraints) + [contentView addConstraints:constraints]; [window setFrame:contentRect display:display]; [window recalculateKeyViewLoop]; } 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