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

Reply via email to