Revision: 16132
          http://sourceforge.net/p/skim-app/code/16132
Author:   hofman
Date:     2026-03-31 17:41:00 +0000 (Tue, 31 Mar 2026)
Log Message:
-----------
Revert to using replaceSubbview:with: for overview. Fix auto-uncollapsing side 
panes in full screen by resetting using private NSSplitViewController method.

Modified Paths:
--------------
    trunk/SKMainWindowController.m
    trunk/SKMainWindowController_Actions.m

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2026-03-30 16:11:50 UTC (rev 16131)
+++ trunk/SKMainWindowController.m      2026-03-31 17:41:00 UTC (rev 16132)
@@ -196,6 +196,10 @@
 @property (nonatomic) BOOL revealsOnEdgeHoverInFullscreen;
 @end
 
+@interface NSSplitViewController (SKPrivateDeclarations)
+- (void)_setHasItemToRevealOnEdgeHover:(BOOL)flag;
+@end
+
 @interface SKMainWindowController ()
 
 - (void)cleanup;
@@ -1672,11 +1676,13 @@
     BOOL isPresentation = [self interactionMode] == SKPresentationMode;
     NSView *oldView = isPresentation ? presentationView : [splitViewController 
view];
     NSView *contentView = [oldView superview];
+    BOOL useContentTop = mwcFlags.fullSizeContent || isPresentation;
+    BOOL hasStatus = isPresentation == NO && [statusBar isVisible];
     NSArray *constraints = @[
-        [[overviewContentView leadingAnchor] constraintEqualToAnchor:[oldView 
leadingAnchor]],
-        [[oldView trailingAnchor] constraintEqualToAnchor:[overviewContentView 
trailingAnchor]],
-        [[overviewContentView topAnchor] constraintEqualToAnchor:[oldView 
topAnchor]],
-        [[oldView bottomAnchor] constraintEqualToAnchor:[overviewContentView 
bottomAnchor]]];
+        [[overviewContentView leadingAnchor] 
constraintEqualToAnchor:[contentView leadingAnchor]],
+        [[contentView trailingAnchor] 
constraintEqualToAnchor:[overviewContentView trailingAnchor]],
+        [[overviewContentView topAnchor] 
constraintEqualToAnchor:[(useContentTop ? contentView : [[self window] 
contentLayoutGuide]) topAnchor]],
+        [(hasStatus ? [statusBar topAnchor] : [contentView bottomAnchor]) 
constraintEqualToAnchor:[overviewContentView bottomAnchor]]];
     
     [overviewContentView setFrame:[oldView frame]];
     [overviewView scrollRectToVisible:[overviewView 
frameForItemAtIndex:[[pdfView currentPage] pageIndex]]];
@@ -1706,25 +1712,22 @@
     
     if (animate) {
         [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
-                [[contentView animator] addSubview:overviewContentView];
+                [context setDuration:0.5];
+                [[contentView animator] replaceSubview:oldView 
with:overviewContentView];
                 [NSLayoutConstraint activateConstraints:constraints];
             }
             completionHandler:^{
-                [[self window] makeFirstResponder:overviewView];
-                [oldView setHidden:YES];
                 [overviewView scrollRectToVisible:[overviewView 
frameForItemAtIndex:[[pdfView currentPage] pageIndex]]];
-                [[self window] recalculateKeyViewLoop];
             }];
     } else {
-        [contentView addSubview:overviewContentView];
+        [contentView replaceSubview:oldView with:overviewContentView];
         [NSLayoutConstraint activateConstraints:constraints];
-        [[self window] makeFirstResponder:overviewView];
-        [oldView setHidden:YES];
         [overviewView scrollRectToVisible:[overviewView 
frameForItemAtIndex:[[pdfView currentPage] pageIndex]]];
-        [[self window] recalculateKeyViewLoop];
     }
     if (isPresentation)
         [NSCursor setHiddenUntilMouseMoves:NO];
+    [[self window] makeFirstResponder:overviewView];
+    [[self window] recalculateKeyViewLoop];
     [touchBarController overviewChanged];
     [noteToolbarController validateButtons];
 }
@@ -1741,29 +1744,37 @@
     
     // don't check interactionMode as this can be called from enterPresentation
     BOOL isPresentation = 0 == ([[overviewContentView window] styleMask] & 
NSWindowStyleMaskTitled);
+    NSView *newView = isPresentation ? presentationView : [splitViewController 
view];
+    NSView *contentView = [overviewContentView superview];
+    BOOL useContentTop = mwcFlags.fullSizeContent || isPresentation;
+    BOOL hasStatus = isPresentation == NO && [statusBar isVisible];
+    NSArray *constraints = @[
+        [[newView leadingAnchor] constraintEqualToAnchor:[contentView 
leadingAnchor]],
+        [[contentView trailingAnchor] constraintEqualToAnchor:[newView 
trailingAnchor]],
+        [[newView topAnchor] constraintEqualToAnchor:[(useContentTop ? 
contentView : [[self window] contentLayoutGuide]) topAnchor]],
+        [(hasStatus ? [statusBar topAnchor] : [contentView bottomAnchor]) 
constraintEqualToAnchor:[newView bottomAnchor]]];
     
-    [isPresentation ? presentationView : [splitViewController view] 
setHidden:NO];
-    [[self window] makeFirstResponder:isPresentation ? presentationView : 
pdfView];
-    
     if (animate) {
         [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
-                [[overviewContentView animator] removeFromSuperview];
+                [context setDuration:0.5];
+                [[contentView animator] replaceSubview:overviewContentView 
with:newView];
+                [NSLayoutConstraint activateConstraints:constraints];
             }
-            completionHandler:^{
-                [[self window] recalculateKeyViewLoop];
-                [touchBarController overviewChanged];
-                [noteToolbarController validateButtons];
-                if (handler)
-                    handler();
-            }];
+            completionHandler:handler];
     } else {
-        [overviewContentView removeFromSuperview];
-        [[self window] recalculateKeyViewLoop];
-        [touchBarController overviewChanged];
-        [noteToolbarController validateButtons];
+        [contentView replaceSubview:overviewContentView with:newView];
+        [NSLayoutConstraint activateConstraints:constraints];
         if (handler)
             handler();
     }
+    [[self window] makeFirstResponder:isPresentation ? presentationView : 
pdfView];
+    [[self window] recalculateKeyViewLoop];
+    [touchBarController overviewChanged];
+    [noteToolbarController validateButtons];
+    if ([splitViewController 
respondsToSelector:@selector(_setHasItemToRevealOnEdgeHover:)]) {
+        [splitViewController _setHasItemToRevealOnEdgeHover:NO];
+        [splitViewController _setHasItemToRevealOnEdgeHover:YES];
+    }
 }
 
     

Modified: trunk/SKMainWindowController_Actions.m
===================================================================
--- trunk/SKMainWindowController_Actions.m      2026-03-30 16:11:50 UTC (rev 
16131)
+++ trunk/SKMainWindowController_Actions.m      2026-03-31 17:41:00 UTC (rev 
16132)
@@ -781,7 +781,8 @@
 
 - (IBAction)toggleStatusBar:(id)sender {
     [[NSUserDefaults standardUserDefaults] setBool:(NO == [statusBar 
isVisible]) forKey:SKShowStatusBarKey];
-    [statusBar toggleBelowView:[splitViewController view] animate:sender != 
nil];
+    NSView *view = [self hasOverview] ? overviewContentView : 
[splitViewController view];
+    [statusBar toggleBelowView:view animate:sender != nil];
 }
 
 - (void)selectSearchFieldForSideViewController:(SKSideViewController 
*)sideViewController {

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