Revision: 12489 http://sourceforge.net/p/skim-app/code/12489 Author: hofman Date: 2021-10-31 14:52:31 +0000 (Sun, 31 Oct 2021) Log Message: ----------- Use auto layout for find bar itself
Modified Paths: -------------- trunk/Base.lproj/FindBar.xib trunk/MainWindow.xib trunk/SKFindController.m Modified: trunk/Base.lproj/FindBar.xib =================================================================== --- trunk/Base.lproj/FindBar.xib 2021-10-31 14:51:56 UTC (rev 12488) +++ trunk/Base.lproj/FindBar.xib 2021-10-31 14:52:31 UTC (rev 12489) @@ -18,11 +18,10 @@ </customObject> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/> - <customView id="1" customClass="SKTopBarView"> + <customView translatesAutoresizingMaskIntoConstraints="NO" id="1" customClass="SKTopBarView"> <rect key="frame" x="0.0" y="0.0" width="220" height="36"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> <subviews> - <searchField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="1" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3"> + <searchField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="1" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3"> <rect key="frame" x="77" y="7" width="32" height="22"/> <constraints> <constraint firstAttribute="width" relation="lessThanOrEqual" constant="500" id="WyN-YQ-969"/> @@ -79,7 +78,8 @@ </textField> </subviews> <constraints> - <constraint firstItem="31" firstAttribute="leading" secondItem="1" secondAttribute="leading" priority="250" constant="8" id="3m9-eP-zWa"/> + <constraint firstAttribute="height" constant="36" id="1Jb-lY-NZY"/> + <constraint firstItem="31" firstAttribute="leading" secondItem="1" secondAttribute="leading" priority="251" constant="8" id="3m9-eP-zWa"/> <constraint firstItem="7" firstAttribute="centerY" secondItem="1" secondAttribute="centerY" id="3td-4x-qin"/> <constraint firstAttribute="trailing" secondItem="7" secondAttribute="trailing" constant="8" id="5iK-qo-2kC"/> <constraint firstItem="5" firstAttribute="leading" secondItem="3" secondAttribute="trailing" constant="8" symbolic="YES" id="ffh-CL-1rh"/> Modified: trunk/MainWindow.xib =================================================================== --- trunk/MainWindow.xib 2021-10-31 14:51:56 UTC (rev 12488) +++ trunk/MainWindow.xib 2021-10-31 14:52:31 UTC (rev 12489) @@ -44,13 +44,11 @@ <rect key="frame" x="0.0" y="0.0" width="250" height="578"/> <autoresizingMask key="autoresizingMask"/> </customView> - <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1321"> + <customView translatesAutoresizingMaskIntoConstraints="NO" id="1321"> <rect key="frame" x="251" y="0.0" width="498" height="578"/> - <autoresizingMask key="autoresizingMask"/> <subviews> - <splitView fixedFrame="YES" dividerStyle="paneSplitter" translatesAutoresizingMaskIntoConstraints="NO" id="1314" customClass="SKSplitView"> + <splitView dividerStyle="paneSplitter" translatesAutoresizingMaskIntoConstraints="NO" id="1314" customClass="SKSplitView"> <rect key="frame" x="0.0" y="0.0" width="498" height="578"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1315"> <rect key="frame" x="0.0" y="0.0" width="498" height="578"/> @@ -65,6 +63,12 @@ </connections> </splitView> </subviews> + <constraints> + <constraint firstAttribute="bottom" secondItem="1314" secondAttribute="bottom" id="BwS-so-46O"/> + <constraint firstAttribute="trailing" secondItem="1314" secondAttribute="trailing" id="OE4-7n-0dl"/> + <constraint firstItem="1314" firstAttribute="top" secondItem="1321" secondAttribute="top" id="Twe-rt-5Qm"/> + <constraint firstItem="1314" firstAttribute="leading" secondItem="1321" secondAttribute="leading" id="xoo-8V-ElE"/> + </constraints> </customView> <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="770"> <rect key="frame" x="750" y="0.0" width="250" height="578"/> Modified: trunk/SKFindController.m =================================================================== --- trunk/SKFindController.m 2021-10-31 14:51:56 UTC (rev 12488) +++ trunk/SKFindController.m 2021-10-31 14:52:31 UTC (rev 12489) @@ -123,70 +123,77 @@ } } - NSRect viewFrame = [view frame]; - NSView *contentView = [view superview]; - NSRect barRect = [view frame]; - CGFloat barHeight = NSHeight([findBar frame]); + NSView *contentView = [view superview]; BOOL visible = (nil == [findBar superview]); + NSView *topView = visible ? view : findBar; + NSLayoutConstraint *topConstraint = nil; - barRect.size.height = barHeight; - - if (visible) { - if ([contentView isFlipped]) - barRect.origin.y -= barHeight; - else - barRect.origin.y = NSMaxY([contentView bounds]); - [[self view] setFrame:barRect]; - [contentView addSubview:findBar positioned:NSWindowBelow relativeTo:nil]; - barHeight = -barHeight; + for (NSLayoutConstraint *constraint in [contentView constraints]) { + if ([constraint firstItem] == topView && [constraint firstAttribute] == NSLayoutAttributeTop) { + topConstraint = constraint; + break; + } + } + + CGFloat barHeight = NSHeight([findBar frame]); + NSMutableArray *constraints = [NSMutableArray array]; + + if (visible) { + [contentView addSubview:findBar positioned:NSWindowBelow relativeTo:nil]; + [constraints addObject:[NSLayoutConstraint constraintWithItem:findBar attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0]]; + [constraints addObject:[NSLayoutConstraint constraintWithItem:contentView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:findBar attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0.0]]; + [constraints addObject:[NSLayoutConstraint constraintWithItem:findBar attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:animate ? -barHeight : 0.0]]; + [constraints addObject:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:findBar attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]]; + [topConstraint setActive:NO]; + [NSLayoutConstraint activateConstraints:constraints]; + [contentView layoutSubtreeIfNeeded]; + topConstraint = [constraints objectAtIndex:2]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:[findBar window]]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:[findBar window]]; [self windowDidBecomeKey:nil]; } else { - if ([contentView isFlipped]) - barRect.origin.y -= barHeight; - else - barRect.origin.y = NSMaxY([contentView bounds]) - barHeight; + [constraints addObject:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidBecomeKeyNotification object:[findBar window]]; [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResignKeyNotification object:[findBar window]]; [self windowDidResignKey:nil]; [delegate findControllerWillBeRemoved:self]; } - viewFrame.size.height += barHeight; - if ([contentView isFlipped]) { - viewFrame.origin.y -= barHeight; - barRect.origin.y -= barHeight; - } else { - barRect.origin.y += barHeight; - } + [messageField setHidden:YES]; if (visible == NO) [(SKTopBarView *)[self view] reflectView:nil animate:NO]; + if (animate) { animating = YES; [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){ [context setDuration:0.5 * [context duration]]; - [[view animator] setFrame:viewFrame]; - [[findBar animator] setFrame:barRect]; - } + [[topConstraint animator] setConstant:visible ? 0.0 : -barHeight]; + } completionHandler:^{ + if (visible == NO) { + [findBar removeFromSuperview]; + [NSLayoutConstraint activateConstraints:constraints]; + } NSWindow *window = [[self view] window]; - if (visible) - [(SKTopBarView *)[self view] reflectView:view animate:NO]; - else - [[self view] removeFromSuperview]; + if (visible) { + [(SKTopBarView *)findBar reflectView:view animate:NO]; + } else { + [findBar removeFromSuperview]; + [NSLayoutConstraint activateConstraints:constraints]; + } [window recalculateKeyViewLoop]; animating = NO; - }]; + }]; } else { - [view setFrame:viewFrame]; if (visible) { - [findBar setFrame:barRect]; - [(SKTopBarView *)[self view] reflectView:view animate:NO]; + [(SKTopBarView *)findBar reflectView:view animate:NO]; } else { [findBar removeFromSuperview]; + [NSLayoutConstraint activateConstraints:constraints]; } + [contentView layoutSubtreeIfNeeded]; [[contentView window] recalculateKeyViewLoop]; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit