diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPTextAndLinkCell.m | 8 | ||||
-rw-r--r-- | Source/SPTooltip.m | 2 | ||||
-rw-r--r-- | Source/TableContent.m | 41 |
3 files changed, 50 insertions, 1 deletions
diff --git a/Source/SPTextAndLinkCell.m b/Source/SPTextAndLinkCell.m index eee3f517..90012fa9 100644 --- a/Source/SPTextAndLinkCell.m +++ b/Source/SPTextAndLinkCell.m @@ -264,4 +264,12 @@ static inline NSRect SPTextLinkRectFromCellRect(NSRect inRect) { return lastLinkRow; } +/** + * Suppress the built-in expansion tooltip + */ +- (NSRect)expansionFrameWithFrame:(NSRect)cellFrame inView:(NSView *)view +{ + return NSZeroRect; +} + @end diff --git a/Source/SPTooltip.m b/Source/SPTooltip.m index 94017795..793deb54 100644 --- a/Source/SPTooltip.m +++ b/Source/SPTooltip.m @@ -325,7 +325,7 @@ static float slow_in_out (float t) float deltaY = p.y - aPoint.y; float dist = sqrtf(deltaX * deltaX + deltaY * deltaY); - float moveThreshold = 20; + float moveThreshold = 10; return dist > moveThreshold; } diff --git a/Source/TableContent.m b/Source/TableContent.m index 5ebb15f9..3f8c9596 100644 --- a/Source/TableContent.m +++ b/Source/TableContent.m @@ -43,6 +43,7 @@ #import "SPTextAndLinkCell.h" #import "QLPreviewPanel.h" #import "SPFieldEditorController.h" +#import "SPTooltip.h" @implementation TableContent @@ -1789,6 +1790,46 @@ #pragma mark - #pragma mark TableView delegate methods +/** + * Show the table cell content as tooltip + * - for text displays line breaks and tabs as well + * - if blob data can be interpret as image data display the image as transparent thumbnail + * (up to now using base64 encoded HTML data) + */ +- (NSString *)tableView:(NSTableView *)aTableView toolTipForCell:(SPTextAndLinkCell *)aCell rect:(NSRectPointer)rect tableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row mouseLocation:(NSPoint)mouseLocation +{ + + if([[aCell stringValue] length] < 1) return nil; + + NSPoint pos = [NSEvent mouseLocation]; + pos.y -= 20; + + // Get the original data for trying to display the blob data as an image + id theValue = NSArrayObjectAtIndex(NSArrayObjectAtIndex(tableValues, row), [[aTableColumn identifier] intValue]); + if ([theValue isKindOfClass:[NSData class]]) { + NSImage *image = [[NSImage alloc] initWithData:theValue]; + if(image) { + int imageWidth = [image size].width; + if (imageWidth > 100) imageWidth = 100; + [SPTooltip showWithObject:[NSString stringWithFormat: + @"<IMG WIDTH='%d' SRC=\"data:image/auto;base64,%@\">", + imageWidth, + [[image TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0]] + atLocation:pos + ofType:@"html" + displayOptions:[NSDictionary dictionaryWithObjectsAndKeys:@"transparent", @"transparent", nil]]; + } + [image release]; + return nil; + } + + // Show the cell string value as tooltip (including line breaks and tabs) + if([[aCell stringValue] length] > 1) + [SPTooltip showWithObject:[aCell stringValue] atLocation:pos]; + + return nil; +} + - (int)numberOfRowsInTableView:(NSTableView *)aTableView { return [tableValues count]; |