mirror of
https://github.com/gnustep/apps-projectcenter.git
synced 2025-02-22 11:21:29 +00:00
Fix to work both with and without MacOS-X compatibile tracking rects.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23712 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
dec193e4c5
commit
05049e9a69
1 changed files with 24 additions and 5 deletions
|
@ -28,6 +28,8 @@
|
||||||
#include "AppKit/NSBezierPath.h"
|
#include "AppKit/NSBezierPath.h"
|
||||||
#include "GNUstepGUI/GSTrackingRect.h"
|
#include "GNUstepGUI/GSTrackingRect.h"
|
||||||
|
|
||||||
|
static BOOL doesRetain = NO;
|
||||||
|
|
||||||
@implementation PCButton
|
@implementation PCButton
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
@ -80,13 +82,15 @@
|
||||||
|
|
||||||
- (void)release
|
- (void)release
|
||||||
{
|
{
|
||||||
|
if (doesRetain)
|
||||||
|
{
|
||||||
// If retain count is number of tracking rects + superview retain,
|
// If retain count is number of tracking rects + superview retain,
|
||||||
// remove tracking rects. It seems that tracking rects retain this object.
|
// remove tracking rects. It seems that tracking rects retain this object.
|
||||||
if (_hasTooltips && [self retainCount] == [_tracking_rects count] + 1)
|
if (_hasTooltips && [self retainCount] == [_tracking_rects count] + 1)
|
||||||
{
|
{
|
||||||
[self removeAllToolTips];
|
[self removeAllToolTips];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
[super release];
|
[super release];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,6 +286,7 @@
|
||||||
{
|
{
|
||||||
SEL ownerSelector;
|
SEL ownerSelector;
|
||||||
NSTrackingRectTag tag;
|
NSTrackingRectTag tag;
|
||||||
|
int rc;
|
||||||
|
|
||||||
if (NSEqualRects(aRect,NSZeroRect) || ttTimer != nil)
|
if (NSEqualRects(aRect,NSZeroRect) || ttTimer != nil)
|
||||||
{
|
{
|
||||||
|
@ -295,11 +300,17 @@
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rc = [self retainCount];
|
||||||
|
|
||||||
// Set rect tracking
|
// Set rect tracking
|
||||||
tag = [self addTrackingRect:aRect
|
tag = [self addTrackingRect:aRect
|
||||||
owner:self
|
owner:self
|
||||||
userData:data
|
userData:data
|
||||||
assumeInside:NO];
|
assumeInside:NO];
|
||||||
|
if (rc != [self retainCount])
|
||||||
|
{
|
||||||
|
doesRetain = YES;
|
||||||
|
}
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
@ -337,6 +348,7 @@
|
||||||
{
|
{
|
||||||
NSTrackingRectTag tag;
|
NSTrackingRectTag tag;
|
||||||
NSRect rect;
|
NSRect rect;
|
||||||
|
int rc;
|
||||||
|
|
||||||
if (string == nil) // Remove old tooltip
|
if (string == nil) // Remove old tooltip
|
||||||
{
|
{
|
||||||
|
@ -355,10 +367,17 @@
|
||||||
rect = [self frame];
|
rect = [self frame];
|
||||||
rect.origin.x = 0;
|
rect.origin.x = 0;
|
||||||
rect.origin.y = 0;
|
rect.origin.y = 0;
|
||||||
|
|
||||||
|
rc = [self retainCount];
|
||||||
tag = [self addTrackingRect:rect
|
tag = [self addTrackingRect:rect
|
||||||
owner:self
|
owner:self
|
||||||
userData:string
|
userData:string
|
||||||
assumeInside:NO];
|
assumeInside:NO];
|
||||||
|
|
||||||
|
if (rc != [self retainCount])
|
||||||
|
{
|
||||||
|
doesRetain = YES;
|
||||||
|
}
|
||||||
_hasTooltips = YES;
|
_hasTooltips = YES;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue