Revision: 14091
          http://sourceforge.net/p/skim-app/code/14091
Author:   hofman
Date:     2024-03-06 18:06:22 +0000 (Wed, 06 Mar 2024)
Log Message:
-----------
Put find bar in a clipview so it isn't animated behind the title bar

Modified Paths:
--------------
    trunk/Base.lproj/FindBar.xib
    trunk/SKFindController.h
    trunk/SKFindController.m
    trunk/SKMainWindowController.m
    trunk/SKMainWindowController_FullScreen.m
    trunk/SKMainWindowController_UI.m

Modified: trunk/Base.lproj/FindBar.xib
===================================================================
--- trunk/Base.lproj/FindBar.xib        2024-03-04 09:57:01 UTC (rev 14090)
+++ trunk/Base.lproj/FindBar.xib        2024-03-06 18:06:22 UTC (rev 14091)
@@ -12,83 +12,95 @@
                 <outlet property="findField" destination="3" id="11"/>
                 <outlet property="messageField" destination="31" id="33"/>
                 <outlet property="navigationButton" destination="5" id="34"/>
-                <outlet property="view" destination="1" id="2"/>
+                <outlet property="topConstraint" destination="YlV-e4-gJi" 
id="Bng-Gy-bLH"/>
+                <outlet property="view" destination="OKW-UO-sDu" 
id="X0x-to-HqA"/>
             </connections>
         </customObject>
         <customObject id="-1" userLabel="First Responder" 
customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
-        <customView translatesAutoresizingMaskIntoConstraints="NO" id="1" 
customClass="SKTopBarView">
+        <customView translatesAutoresizingMaskIntoConstraints="NO" 
id="OKW-UO-sDu" customClass="NSClipView">
             <rect key="frame" x="0.0" y="0.0" width="220" height="36"/>
             <subviews>
-                <searchField verticalHuggingPriority="750" 
horizontalCompressionResistancePriority="250" tag="1" textCompletion="NO" 
translatesAutoresizingMaskIntoConstraints="NO" id="3">
-                    <rect key="frame" x="77" y="7" width="32" height="22"/>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" 
id="1" customClass="SKTopBarView">
+                    <rect key="frame" x="0.0" y="0.0" width="220" height="36"/>
+                    <subviews>
+                        <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"/>
+                                <constraint firstAttribute="width" 
relation="greaterThanOrEqual" constant="32" id="bqT-Kr-B6Z"/>
+                            </constraints>
+                            <searchFieldCell key="cell" scrollable="YES" 
lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" 
tag="1" bezelStyle="round" sendsSearchStringImmediately="YES" 
sendsWholeSearchString="YES" id="4">
+                                <font key="font" metaFont="message"/>
+                                <color key="textColor" name="controlTextColor" 
catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" 
name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </searchFieldCell>
+                            <connections>
+                                <action selector="find:" target="-2" id="30"/>
+                                <binding destination="-2" name="value" 
keyPath="findString" id="5kD-h6-Ny3">
+                                    <dictionary key="options">
+                                        <bool key="NSContinuouslyUpdatesValue" 
value="YES"/>
+                                    </dictionary>
+                                </binding>
+                                <outlet property="delegate" destination="-2" 
id="36"/>
+                            </connections>
+                        </searchField>
+                        <segmentedControl horizontalHuggingPriority="750" 
verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" 
id="5">
+                            <rect key="frame" x="116" y="8" width="45" 
height="20"/>
+                            <segmentedCell key="cell" borderStyle="border" 
alignment="left" segmentDistribution="fill" style="roundRect" 
trackingMode="momentary" id="6">
+                                <font key="font" metaFont="cellTitle"/>
+                                <segments>
+                                    <segment image="NSGoLeftTemplate" 
width="19"/>
+                                    <segment image="NSGoRightTemplate" 
width="19" tag="1"/>
+                                </segments>
+                            </segmentedCell>
+                            <connections>
+                                <action selector="find:" target="-2" id="29"/>
+                            </connections>
+                        </segmentedControl>
+                        <button horizontalHuggingPriority="750" 
verticalHuggingPriority="750" imageHugsTitle="YES" 
translatesAutoresizingMaskIntoConstraints="NO" id="7">
+                            <rect key="frame" x="168" y="8" width="44" 
height="19"/>
+                            <buttonCell key="cell" type="roundRect" 
title="Done" bezelStyle="roundedRect" alignment="center" state="on" 
borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8">
+                                <behavior key="behavior" pushIn="YES" 
lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="cellTitle"/>
+                                <string key="keyEquivalent" base64-UTF8="YES">
+Gw
+</string>
+                            </buttonCell>
+                            <connections>
+                                <action selector="remove:" target="-2" 
id="10"/>
+                            </connections>
+                        </button>
+                        <textField hidden="YES" 
horizontalHuggingPriority="750" verticalHuggingPriority="750" 
translatesAutoresizingMaskIntoConstraints="NO" id="31">
+                            <rect key="frame" x="6" y="10" width="65" 
height="16"/>
+                            <textFieldCell key="cell" scrollable="YES" 
lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Not found" 
id="32">
+                                <font key="font" metaFont="message"/>
+                                <color key="textColor" 
name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" 
name="controlColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                    </subviews>
                     <constraints>
-                        <constraint firstAttribute="width" 
relation="lessThanOrEqual" constant="500" id="WyN-YQ-969"/>
-                        <constraint firstAttribute="width" 
relation="greaterThanOrEqual" constant="32" id="bqT-Kr-B6Z"/>
+                        <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"/>
+                        <constraint firstItem="3" firstAttribute="leading" 
secondItem="31" secondAttribute="trailing" constant="8" symbolic="YES" 
id="fgN-mY-3m6"/>
+                        <constraint firstItem="5" firstAttribute="centerY" 
secondItem="1" secondAttribute="centerY" id="snO-ne-pmX"/>
+                        <constraint firstItem="7" firstAttribute="leading" 
secondItem="5" secondAttribute="trailing" constant="8" symbolic="YES" 
id="x7W-aL-mCY"/>
+                        <constraint firstItem="31" firstAttribute="centerY" 
secondItem="1" secondAttribute="centerY" id="y5L-De-cl0"/>
+                        <constraint firstItem="3" firstAttribute="centerY" 
secondItem="1" secondAttribute="centerY" id="zsv-5P-uCj"/>
                     </constraints>
-                    <searchFieldCell key="cell" scrollable="YES" 
lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" 
tag="1" bezelStyle="round" sendsSearchStringImmediately="YES" 
sendsWholeSearchString="YES" id="4">
-                        <font key="font" metaFont="message"/>
-                        <color key="textColor" name="controlTextColor" 
catalog="System" colorSpace="catalog"/>
-                        <color key="backgroundColor" 
name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                    </searchFieldCell>
-                    <connections>
-                        <action selector="find:" target="-2" id="30"/>
-                        <binding destination="-2" name="value" 
keyPath="findString" id="5kD-h6-Ny3">
-                            <dictionary key="options">
-                                <bool key="NSContinuouslyUpdatesValue" 
value="YES"/>
-                            </dictionary>
-                        </binding>
-                        <outlet property="delegate" destination="-2" id="36"/>
-                    </connections>
-                </searchField>
-                <segmentedControl horizontalHuggingPriority="750" 
verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" 
id="5">
-                    <rect key="frame" x="116" y="8" width="45" height="20"/>
-                    <segmentedCell key="cell" borderStyle="border" 
alignment="left" segmentDistribution="fill" style="roundRect" 
trackingMode="momentary" id="6">
-                        <font key="font" metaFont="cellTitle"/>
-                        <segments>
-                            <segment image="NSGoLeftTemplate" width="19"/>
-                            <segment image="NSGoRightTemplate" width="19" 
tag="1"/>
-                        </segments>
-                    </segmentedCell>
-                    <connections>
-                        <action selector="find:" target="-2" id="29"/>
-                    </connections>
-                </segmentedControl>
-                <button horizontalHuggingPriority="750" 
verticalHuggingPriority="750" imageHugsTitle="YES" 
translatesAutoresizingMaskIntoConstraints="NO" id="7">
-                    <rect key="frame" x="168" y="8" width="44" height="19"/>
-                    <buttonCell key="cell" type="roundRect" title="Done" 
bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" 
imageScaling="proportionallyDown" inset="2" id="8">
-                        <behavior key="behavior" pushIn="YES" 
lightByBackground="YES" lightByGray="YES"/>
-                        <font key="font" metaFont="cellTitle"/>
-                        <string key="keyEquivalent" base64-UTF8="YES">
-Gw
-</string>
-                    </buttonCell>
-                    <connections>
-                        <action selector="remove:" target="-2" id="10"/>
-                    </connections>
-                </button>
-                <textField hidden="YES" horizontalHuggingPriority="750" 
verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" 
id="31">
-                    <rect key="frame" x="6" y="10" width="65" height="16"/>
-                    <textFieldCell key="cell" scrollable="YES" 
lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Not found" 
id="32">
-                        <font key="font" metaFont="message"/>
-                        <color key="textColor" name="disabledControlTextColor" 
catalog="System" colorSpace="catalog"/>
-                        <color key="backgroundColor" name="controlColor" 
catalog="System" colorSpace="catalog"/>
-                    </textFieldCell>
-                </textField>
+                </customView>
             </subviews>
             <constraints>
-                <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"/>
-                <constraint firstItem="3" firstAttribute="leading" 
secondItem="31" secondAttribute="trailing" constant="8" symbolic="YES" 
id="fgN-mY-3m6"/>
-                <constraint firstItem="5" firstAttribute="centerY" 
secondItem="1" secondAttribute="centerY" id="snO-ne-pmX"/>
-                <constraint firstItem="7" firstAttribute="leading" 
secondItem="5" secondAttribute="trailing" constant="8" symbolic="YES" 
id="x7W-aL-mCY"/>
-                <constraint firstItem="31" firstAttribute="centerY" 
secondItem="1" secondAttribute="centerY" id="y5L-De-cl0"/>
-                <constraint firstItem="3" firstAttribute="centerY" 
secondItem="1" secondAttribute="centerY" id="zsv-5P-uCj"/>
+                <constraint firstItem="1" firstAttribute="leading" 
secondItem="OKW-UO-sDu" secondAttribute="leading" id="5uu-bi-ybS"/>
+                <constraint firstAttribute="bottom" secondItem="1" 
secondAttribute="bottom" id="OJY-0m-7KZ"/>
+                <constraint firstItem="1" firstAttribute="top" 
secondItem="OKW-UO-sDu" secondAttribute="top" id="YlV-e4-gJi"/>
+                <constraint firstAttribute="trailing" secondItem="1" 
secondAttribute="trailing" id="mBY-2A-26B"/>
             </constraints>
-            <point key="canvasLocation" x="139" y="154"/>
+            <point key="canvasLocation" x="140" y="23"/>
         </customView>
     </objects>
     <resources>

Modified: trunk/SKFindController.h
===================================================================
--- trunk/SKFindController.h    2024-03-04 09:57:01 UTC (rev 14090)
+++ trunk/SKFindController.h    2024-03-06 18:06:22 UTC (rev 14091)
@@ -48,6 +48,7 @@
     NSTextField *messageField;
     NSButton *doneButton;
     NSSegmentedControl *navigationButton;
+    NSLayoutConstraint *topConstraint;
     NSObjectController *ownerController;
     NSString *findString;
     NSInteger lastChangeCount;
@@ -58,8 +59,10 @@
 @property (nonatomic, nullable, strong) IBOutlet NSTextField *messageField;
 @property (nonatomic, nullable, strong) IBOutlet NSButton *doneButton;
 @property (nonatomic, nullable, strong) IBOutlet NSSegmentedControl 
*navigationButton;
+@property (nonatomic, nullable, strong) IBOutlet NSLayoutConstraint 
*topConstraint;
 @property (nonatomic, nullable, weak) id <SKFindControllerDelegate> delegate;
 @property (nonatomic, nullable, strong) NSString *findString;
+@property (nonatomic, readonly) CGFloat height;
 
 - (void)findForward:(BOOL)forward;
 - (void)updateFindPboard;

Modified: trunk/SKFindController.m
===================================================================
--- trunk/SKFindController.m    2024-03-04 09:57:01 UTC (rev 14090)
+++ trunk/SKFindController.m    2024-03-06 18:06:22 UTC (rev 14091)
@@ -48,7 +48,8 @@
 
 @implementation SKFindController
 
-@synthesize delegate, findField, messageField, doneButton, navigationButton, 
findString;
+@synthesize delegate, findField, messageField, doneButton, navigationButton, 
topConstraint, findString;
+@dynamic height;
 
 - (NSString *)nibName {
     return @"FindBar";
@@ -84,6 +85,10 @@
     [self updateFindPboard];
 }
 
+- (CGFloat)height {
+    return NSHeight([[[[self view] subviews] firstObject] frame]);
+}
+
 - (void)updateFindPboard {
     if (didChange) {
         NSPasteboard *findPboard = [NSPasteboard 
pasteboardWithName:NSPasteboardNameFind];

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2024-03-04 09:57:01 UTC (rev 14090)
+++ trunk/SKMainWindowController.m      2024-03-06 18:06:22 UTC (rev 14091)
@@ -1727,8 +1727,9 @@
     BOOL animate = [NSView shouldShowSlideAnimation];
     NSView *findBar = [findController view];
     NSView *contentView = [findBar superview];
+    NSLayoutConstraint *barTopConstraint = [findController topConstraint];
     NSLayoutConstraint *newTopConstraint = nil;
-    CGFloat barHeight = NSHeight([findBar frame]);
+    CGFloat barHeight = [findController height];
     
     if (mwcFlags.fullSizeContent == NO)
         newTopConstraint = [NSLayoutConstraint constraintWithItem:pdfSplitView 
attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual 
toItem:contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0];
@@ -1748,7 +1749,7 @@
         mwcFlags.isAnimatingFindBar = YES;
         [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
                 [context setDuration:0.5 * [context duration]];
-                [[findBarTopConstraint animator] setConstant:titleBarHeight - 
barHeight];
+                [[barTopConstraint animator] setConstant:-barHeight];
             }
             completionHandler:^{
                 [findBar removeFromSuperview];
@@ -1782,14 +1783,16 @@
         
         BOOL animate = [NSView shouldShowSlideAnimation];
         NSView *contentView = mwcFlags.fullSizeContent ? pdfContentView : 
centerContentView;
-        CGFloat barHeight = NSHeight([findBar frame]);
+        CGFloat barHeight = [findController height];
+        NSLayoutConstraint *barTopConstraint = [findController topConstraint];
         NSArray *constraints = nil;
         
+        [barTopConstraint setConstant:animate ? -barHeight : 0.0];
         [contentView addSubview:findBar];
         constraints = @[
             [NSLayoutConstraint constraintWithItem:findBar 
attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual 
toItem:contentView attribute:NSLayoutAttributeLeading multiplier:1.0 
constant:0.0],
             [NSLayoutConstraint constraintWithItem:contentView 
attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual 
toItem:findBar attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0.0],
-            [NSLayoutConstraint constraintWithItem:findBar 
attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual 
toItem:contentView attribute:NSLayoutAttributeTop multiplier:1.0 
constant:animate ? titleBarHeight - barHeight : titleBarHeight]];
+            [NSLayoutConstraint constraintWithItem:findBar 
attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual 
toItem:contentView attribute:NSLayoutAttributeTop multiplier:1.0 
constant:titleBarHeight]];
         [NSLayoutConstraint activateConstraints:constraints];
         if (mwcFlags.fullSizeContent == NO) {
             [findBarTopConstraint setActive:NO];
@@ -1814,7 +1817,7 @@
             mwcFlags.isAnimatingFindBar = YES;
             [NSAnimationContext runAnimationGroup:^(NSAnimationContext 
*context){
                     [context setDuration:0.5 * [context duration]];
-                    [[findBarTopConstraint animator] 
setConstant:titleBarHeight];
+                    [[barTopConstraint animator] setConstant:0.0];
                 }
                 completionHandler:^{
                     [mainWindow recalculateKeyViewLoop];
@@ -2583,7 +2586,7 @@
             if ([[findController view] window]) {
                 [findBarTopConstraint setConstant:titleBarHeight];
                 if ([self interactionMode] != SKPresentationMode)
-                    [[pdfView scrollView] 
setContentInsets:NSEdgeInsetsMake(NSHeight([[findController view] frame]) + 
titleBarHeight, 0.0, 0.0, 0.0)];
+                    [[pdfView scrollView] 
setContentInsets:NSEdgeInsetsMake([findController height] + titleBarHeight, 
0.0, 0.0, 0.0)];
             }
         }
         

Modified: trunk/SKMainWindowController_FullScreen.m
===================================================================
--- trunk/SKMainWindowController_FullScreen.m   2024-03-04 09:57:01 UTC (rev 
14090)
+++ trunk/SKMainWindowController_FullScreen.m   2024-03-06 18:06:22 UTC (rev 
14091)
@@ -282,7 +282,7 @@
     [scrollView setDrawsBackground:[[savedNormalSetup 
objectForKey:DRAWSBACKGROUND_KEY] boolValue]];
     if (mwcFlags.fullSizeContent && [[findController view] window]) {
         [scrollView setAutomaticallyAdjustsContentInsets:NO];
-        [scrollView 
setContentInsets:NSEdgeInsetsMake(NSHeight([[findController view] frame]) + 
titleBarHeight, 0.0, 0.0, 0.0)];
+        [scrollView setContentInsets:NSEdgeInsetsMake([findController height] 
+ titleBarHeight, 0.0, 0.0, 0.0)];
     }
 }
 

Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m   2024-03-04 09:57:01 UTC (rev 14090)
+++ trunk/SKMainWindowController_UI.m   2024-03-06 18:06:22 UTC (rev 14091)
@@ -1453,7 +1453,7 @@
     BOOL wasVisible = [[findController view] window] != nil;
     [self showFindBar];
     if (wasVisible == NO)
-        
NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor([pdfView
 documentView]), NSAccessibilityLayoutChangedNotification, [NSDictionary 
dictionaryWithObjectsAndKeys:NSAccessibilityUnignoredChildrenForOnlyChild([findController
 view]), NSAccessibilityUIElementsKey, nil]);
+        
NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor([pdfView
 documentView]), NSAccessibilityLayoutChangedNotification, [NSDictionary 
dictionaryWithObjectsAndKeys:NSAccessibilityUnignoredChildrenForOnlyChild([[[findController
 view] subviews] firstObject]), NSAccessibilityUIElementsKey, nil]);
 }
 
 - (void)PDFViewPerformHideFind:(PDFView *)sender {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to