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

Reply via email to