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