aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/SPTextAndLinkCell.m8
-rw-r--r--Source/SPTooltip.m2
-rw-r--r--Source/TableContent.m41
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];