Revision: 16469
          http://sourceforge.net/p/skim-app/code/16469
Author:   hofman
Date:     2026-09-13 17:20:04 +0000 (Sun, 13 Sep 2026)
Log Message:
-----------
Set initial width and collapsed state of side panes initally on view and 
splitview items rather than applying later. Make sure side bar toolbar items 
have correct tooltips when toggling based on contents.

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

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2026-09-13 15:41:58 UTC (rev 16468)
+++ trunk/SKMainWindowController.m      2026-09-13 17:20:04 UTC (rev 16469)
@@ -318,6 +318,9 @@
     BOOL hasWindowSetup = [savedNormalSetup count] > 2;
     NSWindow *window = [self window];
     NSUserDefaults *sud = [NSUserDefaults standardUserDefaults];
+    BOOL leftCollapsed = NO, rightCollapsed = YES;
+    NSView *view;
+    NSNumber *width;
     
     mwcFlags.needsCleanup = YES;
     
@@ -325,8 +328,26 @@
     
     leftSideController = [[SKLeftSideViewController alloc] init];
     [leftSideController setMainController:self];
+    view = [leftSideController view];
+    width = [savedNormalSetup objectForKey:LEFTSIDEPANEWIDTH_KEY] ?: [sud 
objectForKey:SKLeftSidePaneWidthKey];
+    if (width && [width doubleValue] > 0.0) {
+        NSSize size = [view frame].size;
+        size.width = [width doubleValue];
+        [view setFrameSize:size];
+    } else if (width) {
+        leftCollapsed = YES;
+    }
+    
     rightSideController = [[SKRightSideViewController alloc] init];
     [rightSideController setMainController:self];
+    view = [rightSideController view];
+    width = [savedNormalSetup objectForKey:RIGHTSIDEPANEWIDTH_KEY] ?: [sud 
objectForKey:SKRightSidePaneWidthKey];
+    if (width && [width doubleValue] > 0.0) {
+        NSSize size = [view frame].size;
+        size.width = [width doubleValue];
+        [view setFrameSize:size];
+        rightCollapsed = NO;
+    }
     
     splitViewController = [[NSSplitViewController alloc] init];
     
@@ -333,7 +354,7 @@
     NSSplitViewItem *item = [NSSplitViewItem 
sidebarWithViewController:leftSideController];
     [item setMinimumThickness:MIN_SIDE_PANE_WIDTH];
     [item setCanCollapse:YES];
-    [item setCollapsed:NO];
+    [item setCollapsed:leftCollapsed];
     [item setHoldingPriority:260.0];
     [item setSpringLoaded:NO];
     if (@available(macOS 11.0, *))
@@ -349,13 +370,13 @@
     item = [NSSplitViewItem 
splitViewItemWithViewController:rightSideController];
     [item setMinimumThickness:MIN_SIDE_PANE_WIDTH];
     [item setCanCollapse:YES];
-    [item setCollapsed:NO];
+    [item setCollapsed:rightCollapsed];
     [item setHoldingPriority:255.0];
     if ([item 
respondsToSelector:@selector(setRevealsOnEdgeHoverInFullscreen:)])
         [item setRevealsOnEdgeHoverInFullscreen:YES];
     [splitViewController addSplitViewItem:item];
     
-    NSView *view = [splitViewController view];
+    view = [splitViewController view];
     NSView *contentView = [window contentView];
     NSArray *constraints = @[[[view leadingAnchor] 
constraintEqualToAnchor:[contentView leadingAnchor]],
         [[contentView trailingAnchor] constraintEqualToAnchor:[view 
trailingAnchor]],
@@ -438,9 +459,6 @@
     
     [pdfView setDelegate:self];
     
-    [self setLeftSideWidth:[savedNormalSetup 
objectForKey:LEFTSIDEPANEWIDTH_KEY] ?: [sud 
objectForKey:SKLeftSidePaneWidthKey]];
-    [self setRightSideWidth:[savedNormalSetup 
objectForKey:RIGHTSIDEPANEWIDTH_KEY] ?: [sud 
objectForKey:SKRightSidePaneWidthKey] ?: @0.0];
-    
     // this needs to be done before loading the PDFDocument
     [self resetThumbnailSizeIfNeeded];
     [self resetSnapshotSizeIfNeeded];
@@ -452,8 +470,10 @@
     
     // Show/hide left side pane if necessary
     BOOL hasOutline = ([[pdfView document] outlineRoot] != nil);
-    if ([sud boolForKey:SKOpenContentsPaneOnlyForTOCKey])
+    if ([sud boolForKey:SKOpenContentsPaneOnlyForTOCKey] && hasOutline == 
leftCollapsed) {
         [[[splitViewController splitViewItems] firstObject] 
setCollapsed:hasOutline == NO];
+        [toolbarController leftSidePaneDidShowOrHide:hasOutline];
+    }
     if (hasOutline)
         [self setLeftSidePaneState:SKSidePaneStateOutline];
     else
@@ -460,8 +480,10 @@
         [leftSideController.button setEnabled:NO 
forSegment:SKSidePaneStateOutline];
     
     // Show/hide right side pane if necessary
-    if ([sud boolForKey:SKOpenNotesPaneOnlyForNotesKey])
-        [[[splitViewController splitViewItems] lastObject] setCollapsed:[notes 
count] == 0];
+    if ([sud boolForKey:SKOpenNotesPaneOnlyForNotesKey] && ([notes count] > 0) 
== rightCollapsed) {
+        [[[splitViewController splitViewItems] lastObject] 
setCollapsed:rightCollapsed == NO];
+        [toolbarController rightSidePaneDidShowOrHide:rightCollapsed];
+    }
     
     // Due to a bug in Leopard we should only resize and swap in the PDFView 
after loading the PDFDocument
     

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