Revision: 15154 http://sourceforge.net/p/skim-app/code/15154 Author: hofman Date: 2025-05-04 16:20:09 +0000 (Sun, 04 May 2025) Log Message: ----------- set row number in tracking area rather than the rowwView
Modified Paths: -------------- trunk/SKOutlineView.m trunk/SKTableView.m Modified: trunk/SKOutlineView.m =================================================================== --- trunk/SKOutlineView.m 2025-05-04 14:52:54 UTC (rev 15153) +++ trunk/SKOutlineView.m 2025-05-04 16:20:09 UTC (rev 15154) @@ -42,7 +42,7 @@ #import "NSEvent_SKExtensions.h" #import "NSFont_SKExtensions.h" -#define SKImageToolTipRowViewKey @"SKImageToolTipRowView" +#define SKImageToolTipRowNumberKey @"SKImageToolTipRowView" @implementation SKOutlineView @@ -286,7 +286,8 @@ #pragma mark Tracking - (void)addTrackingAreaForRowView:(NSTableRowView *)rowView { - NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:[NSValue valueWithNonretainedObject:rowView], SKImageToolTipRowViewKey, nil]; + NSInteger row = [self rowForView:rowView]; + NSDictionary *userInfo = @{SKImageToolTipRowNumberKey: [NSNumber numberWithInteger:row]}; NSTrackingArea *area = [[NSTrackingArea alloc] initWithRect:[rowView bounds] options:NSTrackingMouseEnteredAndExited | NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect owner:self userInfo:userInfo]; [rowView addTrackingArea:area]; } @@ -293,7 +294,7 @@ - (void)removeTrackingAreaForRowView:(NSTableRowView *)rowView { for (NSTrackingArea *area in [rowView trackingAreas]) { - if ([[area userInfo] objectForKey:SKImageToolTipRowViewKey]) { + if ([[area userInfo] objectForKey:SKImageToolTipRowNumberKey]) { [rowView removeTrackingArea:area]; break; } @@ -336,9 +337,9 @@ - (void)mouseEntered:(NSEvent *)theEvent{ if ([self hasImageToolTips]) { - NSTableRowView *rowView = [[[[theEvent trackingArea] userInfo] objectForKey:SKImageToolTipRowViewKey] nonretainedObjectValue]; - if (rowView) { - NSInteger row = [self rowForView:rowView]; + NSNumber *rowNumber = [[[theEvent trackingArea] userInfo] objectForKey:SKImageToolTipRowNumberKey]; + if (rowNumber) { + NSInteger row = [rowNumber integerValue]; if (row != -1) { id item = [self itemAtRow:row]; if (item) { @@ -356,7 +357,7 @@ } - (void)mouseExited:(NSEvent *)theEvent{ - if ([self hasImageToolTips] && [[[theEvent trackingArea] userInfo] objectForKey:SKImageToolTipRowViewKey]) + if ([self hasImageToolTips] && [[[theEvent trackingArea] userInfo] objectForKey:SKImageToolTipRowNumberKey]) [[SKImageToolTipWindow sharedToolTipWindow] fadeOut]; else if ([[SKOutlineView superclass] instancesRespondToSelector:_cmd]) [super mouseEntered:theEvent]; Modified: trunk/SKTableView.m =================================================================== --- trunk/SKTableView.m 2025-05-04 14:52:54 UTC (rev 15153) +++ trunk/SKTableView.m 2025-05-04 16:20:09 UTC (rev 15154) @@ -42,7 +42,7 @@ #import "NSFont_SKExtensions.h" #import "SKImageToolTipWindow.h" -#define SKImageToolTipRowViewKey @"SKImageToolTipRowView" +#define SKImageToolTipRowNumberKey @"SKImageToolTipRow" #define SKImageToolTipColumnKey @"SKImageToolTipColumn" @implementation SKTableView @@ -289,17 +289,19 @@ } - (void)addTrackingAreaForRowView:(NSTableRowView *)rowView { - NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:[NSValue valueWithNonretainedObject:rowView], SKImageToolTipRowViewKey, nil]; + NSInteger row = [self rowForView:rowView]; + NSDictionary *userInfo = @{SKImageToolTipRowNumberKey: [NSNumber numberWithInteger:row]}; NSTrackingArea *area = [[NSTrackingArea alloc] initWithRect:[rowView bounds] options:NSTrackingMouseEnteredAndExited | NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect owner:self userInfo:userInfo]; [rowView addTrackingArea:area]; } - (void)addTrackingAreasForRowView:(NSTableRowView *)rowView { + NSInteger row = [self rowForView:rowView]; NSInteger column, numCols = [self numberOfColumns]; for (column = 0; column < numCols; column++) { NSView *view = [rowView viewAtColumn:column]; if (view) { - NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:[NSValue valueWithNonretainedObject:rowView], SKImageToolTipRowViewKey, [NSNumber numberWithInteger:column], SKImageToolTipColumnKey, nil]; + NSDictionary *userInfo = @{SKImageToolTipRowNumberKey: [NSNumber numberWithInteger:row], SKImageToolTipColumnKey: [NSNumber numberWithInteger:column]}; NSTrackingArea *area = [[NSTrackingArea alloc] initWithRect:[view frame] options:NSTrackingMouseEnteredAndExited | NSTrackingActiveInKeyWindow owner:self userInfo:userInfo]; [rowView addTrackingArea:area]; } @@ -309,7 +311,7 @@ - (void)removeTrackingAreasForRowView:(NSTableRowView *)rowView { NSArray *areas = [[rowView trackingAreas] copy]; for (NSTrackingArea *area in areas) { - if ([[area userInfo] objectForKey:SKImageToolTipRowViewKey]) + if ([[area userInfo] objectForKey:SKImageToolTipRowNumberKey]) [rowView removeTrackingArea:area]; } } @@ -348,9 +350,9 @@ - (void)mouseEntered:(NSEvent *)theEvent{ if ([self imageToolTipLayout] != SKTableImageToolTipNone) { - NSTableRowView *rowView = [[[[theEvent trackingArea] userInfo] objectForKey:SKImageToolTipRowViewKey] nonretainedObjectValue]; - if (rowView) { - NSInteger row = [self rowForView:rowView]; + NSNumber *rowNumber = [[[[theEvent trackingArea] userInfo] objectForKey:SKImageToolTipRowNumberKey] nonretainedObjectValue]; + if (rowNumber) { + NSInteger row = [rowNumber integerValue]; if (row != -1) { id <SKImageToolTipContext> context = nil; CGFloat scale = 1.0; @@ -372,7 +374,7 @@ } - (void)mouseExited:(NSEvent *)theEvent{ - if ([self imageToolTipLayout] != SKTableImageToolTipNone && [[[theEvent trackingArea] userInfo] objectForKey:SKImageToolTipRowViewKey]) + if ([self imageToolTipLayout] != SKTableImageToolTipNone && [[[theEvent trackingArea] userInfo] objectForKey:SKImageToolTipRowNumberKey]) [[SKImageToolTipWindow sharedToolTipWindow] fadeOut]; else if ([[SKTableView superclass] instancesRespondToSelector:_cmd]) [super mouseExited:theEvent]; 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