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