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