Revision: 16702
          http://sourceforge.net/p/skim-app/code/16702
Author:   hofman
Date:     2026-10-23 16:16:11 +0000 (Fri, 23 Oct 2026)
Log Message:
-----------
increase hugging priority, use same view for vertical constraints

Modified Paths:
--------------
    trunk/Base.lproj/TransitionSheet.xib
    trunk/SKMainWindowController_FullScreen.m

Modified: trunk/Base.lproj/TransitionSheet.xib
===================================================================
--- trunk/Base.lproj/TransitionSheet.xib        2026-10-23 14:28:53 UTC (rev 
16701)
+++ trunk/Base.lproj/TransitionSheet.xib        2026-10-23 16:16:11 UTC (rev 
16702)
@@ -180,6 +180,7 @@
                                 <constraint firstItem="28" 
firstAttribute="baseline" secondItem="25" secondAttribute="baseline" 
id="JCu-xg-iA0"/>
                                 <constraint firstItem="13" 
firstAttribute="leading" secondItem="30" secondAttribute="leading" 
id="JMT-YD-n5O"/>
                                 <constraint firstItem="CAb-kL-2uK" 
firstAttribute="leading" secondItem="30" secondAttribute="leading" 
id="K5H-23-cSs"/>
+                                <constraint firstItem="CAb-kL-2uK" 
firstAttribute="top" secondItem="30" secondAttribute="bottom" constant="8" 
symbolic="YES" id="KBj-IG-fHv"/>
                                 <constraint firstItem="CAb-kL-2uK" 
firstAttribute="firstBaseline" secondItem="26" secondAttribute="firstBaseline" 
id="Kfn-D7-aFG"/>
                                 <constraint firstItem="pat-NC-2oO" 
firstAttribute="firstBaseline" secondItem="26" secondAttribute="firstBaseline" 
id="MbR-Li-of3"/>
                                 <constraint firstItem="26" 
firstAttribute="trailing" secondItem="9" secondAttribute="trailing" 
id="Pa9-Dg-HDo"/>
@@ -193,7 +194,6 @@
                                 <constraint firstItem="13" 
firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" 
symbolic="YES" id="iJT-sy-v0J"/>
                                 <constraint firstItem="30" 
firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="8" 
symbolic="YES" id="lGB-0X-jac"/>
                                 <constraint firstAttribute="trailing" 
relation="greaterThanOrEqual" secondItem="pat-NC-2oO" 
secondAttribute="trailing" constant="20" symbolic="YES" id="qJp-gL-u6X"/>
-                                <constraint firstItem="pat-NC-2oO" 
firstAttribute="top" secondItem="28" secondAttribute="bottom" constant="8" 
symbolic="YES" id="qsy-mn-Ocd"/>
                                 <constraint firstItem="13" 
firstAttribute="top" secondItem="xml-gy-Une" secondAttribute="top" 
constant="10" id="rs0-jG-GnG"/>
                                 <constraint firstItem="25" 
firstAttribute="leading" relation="greaterThanOrEqual" secondItem="xml-gy-Une" 
secondAttribute="leading" constant="10" id="yuh-QM-CcU"/>
                             </constraints>
@@ -241,7 +241,7 @@
                             </constraints>
                         </view>
                     </box>
-                    <button translatesAutoresizingMaskIntoConstraints="NO" 
id="138">
+                    <button verticalHuggingPriority="749" 
translatesAutoresizingMaskIntoConstraints="NO" id="138">
                         <rect key="frame" x="157" y="235" width="174" 
height="20"/>
                         <buttonCell key="cell" type="check" title="Distinct 
page transitions" bezelStyle="regularSquare" imagePosition="left" 
alignment="left" inset="2" id="445">
                             <behavior key="behavior" changeContents="YES" 
doesNotDimImage="YES" lightByContents="YES"/>

Modified: trunk/SKMainWindowController_FullScreen.m
===================================================================
--- trunk/SKMainWindowController_FullScreen.m   2026-10-23 14:28:53 UTC (rev 
16701)
+++ trunk/SKMainWindowController_FullScreen.m   2026-10-23 16:16:11 UTC (rev 
16702)
@@ -79,6 +79,7 @@
 #define SKShowToolbarInFullScreenKey @"SKShowToolbarInFullScreen"
 #define SKShowSidePanesInFullScreenKey @"SKShowSidePanesInFullScreen"
 #define SKResizablePresentationKey @"SKResizablePresentation"
+#define SKPreferExternalDisplayForPresentationKey 
@"SKPreferExternalDisplayForPresentation"
 
 #define AppleMenuBarVisibleInFullscreenKey @"AppleMenuBarVisibleInFullscreen"
 
@@ -140,35 +141,43 @@
 
 #pragma mark Presentation Support Methods
 
-- (NSScreen *)screenForPresentationWindowAvoidingScreen:(NSScreen 
*)screenToAvoid {
+- (NSScreen *)screenForPresentationWindowAvoidingScreen:(NSScreen 
*)screenToAvoid preferExternal:(BOOL)preferExternal {
     NSScreen *mainScreen = [savedNormalWindow screen];
-    NSArray *allScreens = [NSScreen screens];
-    if ([allScreens count] > 1) {
-        NSMutableDictionary *screens = [NSMutableDictionary dictionary];
-        NSMutableArray *screenNumbers = [NSMutableArray array];
-        NSNumber *avoidScreenNumber = nil;
-        NSNumber *mainScreenNumber = nil;
-        for (NSScreen *aScreen in allScreens) {
-            NSDictionary *deviceDescription = [aScreen deviceDescription];
-            if ([deviceDescription objectForKey:NSDeviceIsScreen] == nil)
-                continue;
-            NSNumber *aScreenNumber = [deviceDescription 
objectForKey:@"NSScreenNumber"];
-            CGDirectDisplayID displayID = (CGDirectDisplayID)[aScreenNumber 
unsignedIntValue];
-            BOOL isBuiltin = screenToAvoid == nil && avoidScreenNumber == nil 
&& CGDisplayIsBuiltin(displayID);
-            displayID = CGDisplayMirrorsDisplay(displayID);
-            if (displayID == kCGNullDirectDisplay) {
-                [screenNumbers addObject:aScreenNumber];
-                [screens setObject:aScreen forKey:aScreenNumber];
+    if (screenToAvoid || preferExternal) {
+        NSArray *allScreens = [NSScreen screens];
+        if ([allScreens count] > 1) {
+            NSMutableDictionary *screens = [NSMutableDictionary dictionary];
+            NSMutableArray *screenNumbers = [NSMutableArray array];
+            NSNumber *avoidScreenNumber = nil;
+            NSNumber *builtinScreenNumber = nil;
+            NSNumber *mainScreenNumber = nil;
+            for (NSScreen *aScreen in allScreens) {
+                NSDictionary *deviceDescription = [aScreen deviceDescription];
+                if ([deviceDescription objectForKey:NSDeviceIsScreen] == nil)
+                    continue;
+                NSNumber *aScreenNumber = [deviceDescription 
objectForKey:@"NSScreenNumber"];
+                CGDirectDisplayID displayID = 
(CGDirectDisplayID)[aScreenNumber unsignedIntValue];
+                CGDirectDisplayID primaryDisplayID = 
CGDisplayMirrorsDisplay(displayID);
+                if (primaryDisplayID == kCGNullDirectDisplay) {
+                    [screenNumbers addObject:aScreenNumber];
+                    [screens setObject:aScreen forKey:aScreenNumber];
+                } else {
+                    aScreenNumber = [NSNumber 
numberWithUnsignedInt:primaryDisplayID];
+                }
+                if (avoidScreenNumber == nil && [aScreen 
isEqual:screenToAvoid])
+                    avoidScreenNumber = aScreenNumber;
+                if (preferExternal && builtinScreenNumber == nil && 
CGDisplayIsBuiltin(displayID))
+                    builtinScreenNumber = aScreenNumber;
+                if (mainScreenNumber == nil && [aScreen isEqual:mainScreen])
+                    mainScreenNumber = aScreenNumber;
             }
-            if (avoidScreenNumber == nil && (isBuiltin || [aScreen 
isEqual:screenToAvoid]))
-                avoidScreenNumber = displayID == kCGNullDirectDisplay ? 
aScreenNumber : [NSNumber numberWithUnsignedInt:displayID];
-            if ([aScreen isEqual:mainScreen])
-                mainScreenNumber = displayID == kCGNullDirectDisplay ? 
aScreenNumber : [NSNumber numberWithUnsignedInt:displayID];
+            if (avoidScreenNumber)
+                [screenNumbers removeObject:avoidScreenNumber];
+            if (builtinScreenNumber && [screenNumbers count] > 1)
+                [screenNumbers removeObject:builtinScreenNumber];
+            if ([screenNumbers count] > 0 && [screenNumbers 
containsObject:mainScreenNumber] == NO)
+                return [screens objectForKey:[screenNumbers firstObject]];
         }
-        if (avoidScreenNumber)
-            [screenNumbers removeObject:avoidScreenNumber];
-        if ([screenNumbers count] > 0 && [screenNumbers 
containsObject:mainScreenNumber] == NO)
-            return [screens objectForKey:[screenNumbers firstObject]];
     }
     return mainScreen;
 }
@@ -192,7 +201,7 @@
         
         [preview setDelegate:self];
         
-        NSScreen *screen = [self 
screenForPresentationWindowAvoidingScreen:presentationScreen];
+        NSScreen *screen = [self 
screenForPresentationWindowAvoidingScreen:presentationScreen preferExternal:NO];
         [preview setPdfDocument:[pdfView document] previewPageNumber:pageIndex 
displayOnScreen:screen];
     
         [[self document] addWindowController:preview];
@@ -277,12 +286,13 @@
     interactionMode = SKPresentationMode;
     
     NSScreen *screen = nil;
+    BOOL preferExternal = [[NSUserDefaults standardUserDefaults] 
boolForKey:SKPreferExternalDisplayForPresentationKey];
     if ([self presentationNotesDocument]) {
         if ([self presentationNotesDocument] != [self document])
             screen = [[[self presentationNotesDocument] primaryWindow] screen];
-        screen = [self screenForPresentationWindowAvoidingScreen:screen];
+        screen = [self screenForPresentationWindowAvoidingScreen:screen 
preferExternal:preferExternal];
     } else {
-        screen = [normalWindow screen];
+        screen = [self screenForPresentationWindowAvoidingScreen:nil 
preferExternal:preferExternal];
     }
     
     NSWindow *presentationWindow = [[SKFullScreenWindow alloc] 
initWithContentRect:[screen frame]];

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