diff options
author | rowanbeentje <rowan@beent.je> | 2010-07-31 22:21:00 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2010-07-31 22:21:00 +0000 |
commit | aeb89462c557f2b9f79c070b7ce30fa68f63faf7 (patch) | |
tree | 9757ee6b55819126ccc3e481050597cbb3db1a25 /Source/YRKSpinningProgressIndicator.m | |
parent | 3755c18f7b0c572c2205011d7a1d519c36fa2ef0 (diff) | |
download | sequelpro-aeb89462c557f2b9f79c070b7ce30fa68f63faf7.tar.gz sequelpro-aeb89462c557f2b9f79c070b7ce30fa68f63faf7.tar.bz2 sequelpro-aeb89462c557f2b9f79c070b7ce30fa68f63faf7.zip |
- Replace progress indicator CoreAnimation drawing with manual shadow/fade code; this addresses hangs (see Issue #6677) and also prevents triggering the discrete graphics chip on newer MacBook Pros.
- Update localisable strings
Diffstat (limited to 'Source/YRKSpinningProgressIndicator.m')
-rw-r--r-- | Source/YRKSpinningProgressIndicator.m | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/Source/YRKSpinningProgressIndicator.m b/Source/YRKSpinningProgressIndicator.m index 4872b201..b6f3c0ac 100644 --- a/Source/YRKSpinningProgressIndicator.m +++ b/Source/YRKSpinningProgressIndicator.m @@ -56,6 +56,7 @@ _currentValue = 0.0; _maxValue = 100.0; _usesThreadedAnimation = NO; + _shadow = nil; } return self; } @@ -63,6 +64,7 @@ - (void) dealloc { if (_foreColor) [_foreColor release]; if (_backColor) [_backColor release]; + if (_shadow) [_shadow release]; if (_isAnimating) [self stopAnimation:self]; [super dealloc]; @@ -94,15 +96,17 @@ else maxSize = size.width; + CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; + [NSGraphicsContext saveGraphicsState]; + + if (_shadow) [_shadow set]; + // fill the background, if set if(_drawBackground) { [_backColor set]; [NSBezierPath fillRect:[self bounds]]; } - CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; - [NSGraphicsContext saveGraphicsState]; - // Move the CTM so 0,0 is at the center of our bounds CGContextTranslateCTM(currentContext,[self bounds].size.width/2,[self bounds].size.height/2); @@ -313,6 +317,20 @@ [self setNeedsDisplay:YES]; } +- (NSShadow *)shadow +{ + return [[_shadow retain] autorelease]; +} + +- (void)setShadow:(NSShadow *)value +{ + if (_shadow != value) { + [_shadow release]; + _shadow = [value copy]; + [self setNeedsDisplay:YES]; + } +} + - (BOOL)isIndeterminate { return _isIndeterminate; |