Revision: 12733
          http://sourceforge.net/p/skim-app/code/12733
Author:   hofman
Date:     2022-01-21 15:09:57 +0000 (Fri, 21 Jan 2022)
Log Message:
-----------
Delay and coalesce auto resizing of note rows when resizing column widths

Modified Paths:
--------------
    trunk/NSObject_SKExtensions.h
    trunk/NSObject_SKExtensions.m
    trunk/SKMainWindowController_UI.m
    trunk/SKNotesDocument.m
    trunk/SKPDFView.m

Modified: trunk/NSObject_SKExtensions.h
===================================================================
--- trunk/NSObject_SKExtensions.h       2022-01-21 14:25:58 UTC (rev 12732)
+++ trunk/NSObject_SKExtensions.h       2022-01-21 15:09:57 UTC (rev 12733)
@@ -42,6 +42,8 @@
 
 @interface NSObject (SKExtensions)
 
+- (void)performSelectorOnce:(SEL)aSelector afterDelay:(NSTimeInterval)delay;
+
 - (NSUInteger)countOfTexLines;
 - (id)objectInTexLinesAtIndex:(NSUInteger)idx;
 

Modified: trunk/NSObject_SKExtensions.m
===================================================================
--- trunk/NSObject_SKExtensions.m       2022-01-21 14:25:58 UTC (rev 12732)
+++ trunk/NSObject_SKExtensions.m       2022-01-21 15:09:57 UTC (rev 12733)
@@ -44,6 +44,11 @@
 
 @implementation NSObject (SKExtensions)
 
+- (void)performSelectorOnce:(SEL)aSelector afterDelay:(NSTimeInterval)delay {
+    [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:aSelector object:nil];
+    [self performSelector:aSelector withObject:nil afterDelay:delay];
+}
+
 - (NSUInteger)countOfTexLines {
     return INT_MAX;
 }

Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m   2022-01-21 14:25:58 UTC (rev 12732)
+++ trunk/SKMainWindowController_UI.m   2022-01-21 15:09:57 UTC (rev 12733)
@@ -90,6 +90,7 @@
 #import "SKOverviewView.h"
 #import "NSView_SKExtensions.h"
 #import "NSImage_SKExtensions.h"
+#import "NSObject_SKExtensions.h"
 
 #define NOTES_KEY       @"notes"
 #define SNAPSHOTS_KEY   @"snapshots"
@@ -852,15 +853,15 @@
     }
 }
 
+- (void)autoResizeNoteRows {
+    [rowHeights removeAllFloats];
+    [rightSideController.noteOutlineView noteHeightOfRowsChangedAnimating:YES];
+}
+
 - (void)outlineViewColumnDidResize:(NSNotification *)notification{
     if (mwcFlags.autoResizeNoteRows && [[notification object] 
isEqual:rightSideController.noteOutlineView] &&
-        [(SKScrollView *)[rightSideController.noteOutlineView 
enclosingScrollView] isResizingSubviews] == NO) {
-        NSTableColumn *tc = [[notification userInfo] 
objectForKey:@"NSTableColumn"];
-        if ([[tc identifier] isEqualToString:NOTE_COLUMNID] || tc == 
[[notification object] lastVisibleTableColumn]) {
-            [rowHeights removeAllFloats];
-            [rightSideController.noteOutlineView 
noteHeightOfRowsChangedAnimating:NO];
-        }
-    }
+        [(SKScrollView *)[rightSideController.noteOutlineView 
enclosingScrollView] isResizingSubviews] == NO)
+        [self performSelectorOnce:@selector(autoResizeNoteRows) 
afterDelay:0.0];
 }
 
 - (void)outlineView:(NSOutlineView *)ov 
didChangeHiddenOfTableColumn:(NSTableColumn *)tableColumn {

Modified: trunk/SKNotesDocument.m
===================================================================
--- trunk/SKNotesDocument.m     2022-01-21 14:25:58 UTC (rev 12732)
+++ trunk/SKNotesDocument.m     2022-01-21 15:09:57 UTC (rev 12733)
@@ -72,6 +72,7 @@
 #import "NSInvocation_SKExtensions.h"
 #import "PDFDocument_SKExtensions.h"
 #import "SKNoteTableRowView.h"
+#import "NSObject_SKExtensions.h"
 
 #define SKNotesDocumentWindowFrameAutosaveName @"SKNotesDocumentWindow"
 
@@ -758,14 +759,14 @@
     [ov reloadData];
 }
 
+- (void)autoResizeNoteRows {
+    [rowHeights removeAllFloats];
+    [outlineView noteHeightOfRowsChangedAnimating:YES];
+}
+
 - (void)outlineViewColumnDidResize:(NSNotification *)notification{
-    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];
-        }
-    }
+    if (ndFlags.autoResizeRows && [(SKScrollView *)[[notification object] 
enclosingScrollView] isResizingSubviews] == NO)
+        [self performSelectorOnce:@selector(autoResizeNoteRows) 
afterDelay:0.0];
 }
 
 - (void)outlineView:(NSOutlineView *)ov 
didChangeHiddenOfTableColumn:(NSTableColumn *)tableColumn {

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2022-01-21 14:25:58 UTC (rev 12732)
+++ trunk/SKPDFView.m   2022-01-21 15:09:57 UTC (rev 12733)
@@ -80,6 +80,7 @@
 #import "NSScroller_SKExtensions.h"
 #import "SKColorMenuView.h"
 #import "SKMainWindowController_Actions.h"
+#import "NSObject_SKExtensions.h"
 
 #define ANNOTATION_MODE_COUNT 9
 #define TOOL_MODE_COUNT 5
@@ -209,7 +210,6 @@
 
 - (void)doAutoHide;
 - (void)showNavWindow;
-- (void)performSelectorOnce:(SEL)aSelector afterDelay:(NSTimeInterval)delay;
 
 - (void)doMoveActiveAnnotationForKey:(unichar)eventChar 
byAmount:(CGFloat)delta;
 - (void)doResizeActiveAnnotationForKey:(unichar)eventChar 
byAmount:(CGFloat)delta;
@@ -3301,11 +3301,6 @@
     }
 }
 
-- (void)performSelectorOnce:(SEL)aSelector afterDelay:(NSTimeInterval)delay {
-    [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:aSelector object:nil];
-    [self performSelector:aSelector withObject:nil afterDelay:delay];
-}
-
 #pragma mark Event handling
 
 - (void)doMoveActiveAnnotationForKey:(unichar)eventChar 
byAmount:(CGFloat)delta {

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