Revision: 29178
          http://sourceforge.net/p/bibdesk/svn/29178
Author:   hofman
Date:     2025-04-23 22:11:12 +0000 (Wed, 23 Apr 2025)
Log Message:
-----------
update highlight rects only when grid changed when moving to a superview

Modified Paths:
--------------
    trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m

Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m
===================================================================
--- trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m      2025-04-23 
22:00:33 UTC (rev 29177)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m      2025-04-23 
22:11:12 UTC (rev 29178)
@@ -267,7 +267,7 @@
 - (FVIcon *)_cachedIconForURL:(NSURL *)aURL;
 - (void)_getDisplayName:(NSString **)name label:(NSUInteger *)label 
isFile:(BOOL *)isFile forURL:(NSURL *)aURL;
 - (NSSize)_paddingForScale:(CGFloat)scale;
-- (void)_recalculateGridSize;
+- (BOOL)_recalculateGridSize;
 - (void)_reloadIcons;
 - (void)_resetViewLayout;
 - (void)_resetTrackingRectsAndToolTips;
@@ -1103,6 +1103,7 @@
     NSScrollView *scrollView = [self enclosingScrollView];
     if ((scrollView && [[notification object] isEqual:[self superview]]) || 
(scrollView == nil && [[notification object] isEqual:self])) {
         [self _recalculateGridSize];
+        [self _updateHighlightRects];
         if (scrollView)
             [_backgroundView setFrame:[scrollView bounds]];
     }
@@ -1152,7 +1153,8 @@
     if (superview) {
         [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(_handleSuperviewDidResize:) 
name:NSViewFrameDidChangeNotification object:observedView];
         
-        [self _recalculateGridSize];
+        if ([self _recalculateGridSize])
+            [self _updateHighlightRects];
         [[self window] invalidateCursorRectsForView:self];
         if ([self window] && [[self window] isKeyWindow] == NO)
             [self resetCursorRects];
@@ -1268,7 +1270,7 @@
     *iconSize = NSMakeSize(iconScale * DEFAULT_ICON_SIZE.width, iconScale * 
DEFAULT_ICON_SIZE.height);
 }
 
-- (void)_getColumns:(NSInteger *)numberOfColumns rows:(NSInteger 
*)numberOfRows fittingContentWidth:(CGFloat)width {
+- (void)_getColumns:(NSUInteger *)numberOfColumns rows:(NSUInteger 
*)numberOfRows fittingContentWidth:(CGFloat)width {
     *numberOfColumns = MAX( 1,  MIN( (NSInteger)[self numberOfIcons], 
(NSInteger)floor( ( width - 2 * DEFAULT_MARGIN.width ) / [self _columnWidth] ) 
) );
     *numberOfRows = ( [self numberOfIcons]  + *numberOfColumns - 1 ) / 
*numberOfColumns;
 }
@@ -1301,7 +1303,7 @@
     return contentSize;
 }
 
-- (void)_recalculateGridSize
+- (BOOL)_recalculateGridSize
 {
     NSScrollView *scrollView = [self enclosingScrollView];
     NSSize contentSize = scrollView ? [scrollView contentSize] : [self 
bounds].size;
@@ -1308,6 +1310,7 @@
     BOOL autoHidesScrollers = NO;
     if ([scrollView respondsToSelector:@selector(scrollerStyle)] == NO || 
[scrollView scrollerStyle] == NSScrollerStyleLegacy)
         autoHidesScrollers = [scrollView autohidesScrollers];
+    
     BOOL changed = NO;
     
     if (_fvFlags.displayMode == FVDisplayModeColumn) {
@@ -1353,7 +1356,7 @@
         }
         
         if (NSEqualSizes(padding, _padding) == NO) {
-            padding = _padding;
+            _padding = padding;
             changed = YES;
         }
         
@@ -1400,14 +1403,14 @@
         }
         
         if (NSEqualSizes(padding, _padding) == NO) {
-            padding = _padding;
+            _padding = padding;
             changed = YES;
         }
         
     } else {
         
-        NSInteger numberOfColumns = _numberOfColumns;
-        NSInteger numberOfRows = _numberOfRows;
+        NSUInteger numberOfColumns = _numberOfColumns;
+        NSUInteger numberOfRows = _numberOfRows;
         
         _padding = [self _paddingForScale:[self iconScale]];
         
@@ -1432,7 +1435,7 @@
             
         }
         
-        changed = (NSInteger)_numberOfColumns != numberOfColumns || 
(NSInteger)_numberOfRows != numberOfRows;
+        changed = _numberOfColumns != numberOfColumns || _numberOfRows != 
numberOfRows;
         
         _numberOfColumns = numberOfColumns;
         _numberOfRows = numberOfRows;
@@ -1459,8 +1462,7 @@
         
     }
     
-    if (changed)
-        [self _updateHighlightRects];
+    return changed;
 }
 
 - (NSUInteger)_indexForGridRow:(NSUInteger)rowIndex 
column:(NSUInteger)colIndex;
@@ -1792,6 +1794,8 @@
     // Problem exposed in BibDesk: select all, scroll halfway down in file 
pane, then change selection to a single row.  FVFileView content didn't update 
correctly, even though reloadIcons was called.  Logging drawRect: indicated 
that the wrong region was being updated, but calling _recalculateGridSize here 
fixed it.
     [self _recalculateGridSize];
     
+    [self _updateHighlightRects];
+    
     // We may have to change the frames of the progress indicators.
     [self _updateProgressIndicatorFrames];
     

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to