Revision: 12728 http://sourceforge.net/p/skim-app/code/12728 Author: hofman Date: 2022-01-20 16:07:16 +0000 (Thu, 20 Jan 2022) Log Message: ----------- Always auto size notes when (un)hiding tablecolumns. Auto size notes when resizing last visible column, as this may change the outlineview size.
Modified Paths: -------------- trunk/SKMainWindowController_UI.m trunk/SKNoteOutlineView.h trunk/SKNoteOutlineView.m trunk/SKNotesDocument.m Modified: trunk/SKMainWindowController_UI.m =================================================================== --- trunk/SKMainWindowController_UI.m 2022-01-20 15:17:46 UTC (rev 12727) +++ trunk/SKMainWindowController_UI.m 2022-01-20 16:07:16 UTC (rev 12728) @@ -851,19 +851,23 @@ } - (void)outlineViewColumnDidResize:(NSNotification *)notification{ - if (mwcFlags.autoResizeNoteRows && [[notification object] isEqual:rightSideController.noteOutlineView] && [[[[notification userInfo] objectForKey:@"NSTableColumn"] identifier] isEqualToString:NOTE_COLUMNID] && + if (mwcFlags.autoResizeNoteRows && [[notification object] isEqual:rightSideController.noteOutlineView] && [(SKScrollView *)[rightSideController.noteOutlineView enclosingScrollView] isResizingSubviews] == NO) { - [rowHeights removeAllFloats]; - [rightSideController.noteOutlineView noteHeightOfRowsChangedAnimating:NO]; + NSTableColumn *tc = [[notification userInfo] objectForKey:@"NSTableColumn"]; + if ([[tc identifier] isEqualToString:NOTE_COLUMNID] || tc == [[notification object] lastVisibleTableColumn]) { + [rowHeights removeAllFloats]; + [rightSideController.noteOutlineView noteHeightOfRowsChangedAnimating:NO]; + } } } - (void)outlineView:(NSOutlineView *)ov didChangeHiddenOfTableColumn:(NSTableColumn *)tableColumn { - if (mwcFlags.autoResizeNoteRows && - [ov isEqual:rightSideController.noteOutlineView] && - [[tableColumn identifier] isEqualToString:NOTE_COLUMNID]) { - if (noteColumnWidthOffset <= 0.0 && [tableColumn isHidden] == NO && [ov numberOfRows] > 0) - noteColumnWidthOffset = [tableColumn width] - NSWidth([ov frameOfCellAtColumn:[[ov tableColumns] indexOfObject:tableColumn] row:0]); + if (mwcFlags.autoResizeNoteRows && [ov isEqual:rightSideController.noteOutlineView]) { + if (noteColumnWidthOffset <= 0.0 && [ov numberOfRows] > 0) { + NSTableColumn *tc = [ov tableColumnWithIdentifier:NOTE_COLUMNID]; + if ([tc isHidden] == NO) + noteColumnWidthOffset = [tc width] - NSWidth([ov frameOfCellAtColumn:[[ov tableColumns] indexOfObject:tc] row:0]); + } [rowHeights removeAllFloats]; [rightSideController.noteOutlineView noteHeightOfRowsChangedAnimating:NO]; } Modified: trunk/SKNoteOutlineView.h =================================================================== --- trunk/SKNoteOutlineView.h 2022-01-20 15:17:46 UTC (rev 12727) +++ trunk/SKNoteOutlineView.h 2022-01-20 16:07:16 UTC (rev 12728) @@ -48,6 +48,8 @@ - (id <SKNoteOutlineViewDelegate>)delegate; - (void)setDelegate:(id <SKNoteOutlineViewDelegate>)newDelegate; +@property (nonatomic, readonly) NSTableColumn *lastVisibleTableColumn; + @end Modified: trunk/SKNoteOutlineView.m =================================================================== --- trunk/SKNoteOutlineView.m 2022-01-20 15:17:46 UTC (rev 12727) +++ trunk/SKNoteOutlineView.m 2022-01-20 16:07:16 UTC (rev 12728) @@ -61,6 +61,8 @@ @implementation SKNoteOutlineView +@dynamic lastVisibleTableColumn; + static inline NSString *titleForTableColumnIdentifier(NSString *identifier) { if ([identifier isEqualToString:NOTE_COLUMNID]) return NSLocalizedString(@"Note", @"Table header title"); @@ -172,6 +174,16 @@ return [super frameOfCellAtColumn:column row:row]; } +- (NSTableColumn *)lastVisibleTableColumn { + NSEnumerator *columnEnum = [[self tableColumns] reverseObjectEnumerator]; + NSTableColumn *tc; + while ((tc = [columnEnum nextObject])) { + if ([tc isHidden] == NO) + return tc; + } + return nil; +} + #pragma mark Delegate - (id <SKNoteOutlineViewDelegate>)delegate { return (id <SKNoteOutlineViewDelegate>)[super delegate]; } Modified: trunk/SKNotesDocument.m =================================================================== --- trunk/SKNotesDocument.m 2022-01-20 15:17:46 UTC (rev 12727) +++ trunk/SKNotesDocument.m 2022-01-20 16:07:16 UTC (rev 12728) @@ -757,17 +757,22 @@ } - (void)outlineViewColumnDidResize:(NSNotification *)notification{ - if (ndFlags.autoResizeRows && [[[[notification userInfo] objectForKey:@"NSTableColumn"] identifier] isEqualToString:NOTE_COLUMNID] && [(SKScrollView *)[[notification object] enclosingScrollView] isResizingSubviews] == NO) { - [rowHeights removeAllFloats]; - [outlineView noteHeightOfRowsChangedAnimating:NO]; + if (ndFlags.autoResizeRows && [(SKScrollView *)[[notification object] enclosingScrollView] isResizingSubviews] == NO) { + NSTableColumn *tc = [[notification userInfo] objectForKey:@"NSTableColumn"]; + if ([[tc identifier] isEqualToString:NOTE_COLUMNID] || tc == [outlineView lastVisibleTableColumn]) { + [rowHeights removeAllFloats]; + [outlineView noteHeightOfRowsChangedAnimating:NO]; + } } } - (void)outlineView:(NSOutlineView *)ov didChangeHiddenOfTableColumn:(NSTableColumn *)tableColumn { - if (ndFlags.autoResizeRows && - [[tableColumn identifier] isEqualToString:NOTE_COLUMNID]) { - if (noteColumnWidthOffset <= 0.0 && [tableColumn isHidden] == NO && [outlineView numberOfRows] > 0) - noteColumnWidthOffset = [tableColumn width] - NSWidth([ov frameOfCellAtColumn:[[ov tableColumns] indexOfObject:tableColumn] row:0]); + if (ndFlags.autoResizeRows) { + if (noteColumnWidthOffset <= 0.0 && [outlineView numberOfRows] > 0) { + NSTableColumn *tc = [outlineView tableColumnWithIdentifier:NOTE_COLUMNID]; + if ([tc isHidden] == NO) + noteColumnWidthOffset = [tc width] - NSWidth([ov frameOfCellAtColumn:[[ov tableColumns] indexOfObject:tc] row:0]); + } [rowHeights removeAllFloats]; [outlineView noteHeightOfRowsChangedAnimating:NO]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit