aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPTextAndLinkCell.m
diff options
context:
space:
mode:
Diffstat (limited to 'Source/SPTextAndLinkCell.m')
-rw-r--r--Source/SPTextAndLinkCell.m9
1 files changed, 6 insertions, 3 deletions
diff --git a/Source/SPTextAndLinkCell.m b/Source/SPTextAndLinkCell.m
index 249c5261..3e91914a 100644
--- a/Source/SPTextAndLinkCell.m
+++ b/Source/SPTextAndLinkCell.m
@@ -34,6 +34,8 @@
@implementation SPTextAndLinkCell
+@synthesize linkActive;
+
/**
* Provide a method to derive the link rect from a cell rect.
*/
@@ -53,6 +55,7 @@ static inline NSRect SPTextLinkRectFromCellRect(NSRect inRect)
self = [super initWithCoder:coder];
if (self) {
hasLink = NO;
+ linkActive = YES;
linkButton = nil;
linkTarget = nil;
drawState = SPLinkDrawStateNormal;
@@ -131,7 +134,7 @@ static inline NSRect SPTextLinkRectFromCellRect(NSRect inRect)
{
// Fast case for no arrow
- if (!hasLink) {
+ if (!hasLink || !linkActive) {
[super drawInteriorWithFrame:aRect inView:controlView];
return;
}
@@ -179,7 +182,7 @@ static inline NSRect SPTextLinkRectFromCellRect(NSRect inRect)
{
// Fast case for no link - make entire cell editable click area
- if (!hasLink) return NSCellHitContentArea | NSCellHitEditableTextArea;
+ if (!hasLink || !linkActive) return NSCellHitContentArea | NSCellHitEditableTextArea;
NSPoint p = [[[NSApp mainWindow] contentView] convertPoint:[event locationInWindow] toView:controlView];
NSRect linkRect = SPTextLinkRectFromCellRect(cellFrame);
@@ -204,7 +207,7 @@ static inline NSRect SPTextLinkRectFromCellRect(NSRect inRect)
{
// Fast case for no link
- if (!hasLink) return [super trackMouse:theEvent inRect:cellFrame ofView:controlView untilMouseUp:untilMouseUp];
+ if (!hasLink || !linkActive) return [super trackMouse:theEvent inRect:cellFrame ofView:controlView untilMouseUp:untilMouseUp];
NSPoint p = [controlView convertPoint:[theEvent locationInWindow] fromView:nil];
NSRect linkRect = SPTextLinkRectFromCellRect(cellFrame);