From 656ebb3bc0dd048ac484f13ac6d4de0a6daeac9e Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Thu, 30 Aug 2012 02:37:00 +0000 Subject: [PATCH] #5026 StatusBarView doesn't fully match toolbar on 10.7+ --- macosx/StatusBarView.h | 2 ++ macosx/StatusBarView.m | 33 ++++++++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/macosx/StatusBarView.h b/macosx/StatusBarView.h index aa476c77d..ad6772651 100644 --- a/macosx/StatusBarView.h +++ b/macosx/StatusBarView.h @@ -23,10 +23,12 @@ *****************************************************************************/ #import +#import @interface StatusBarView : NSView { NSGradient * fGradient; + CIImage * fNoiseImage; } @end diff --git a/macosx/StatusBarView.m b/macosx/StatusBarView.m index 46c331fd9..112c86bd2 100644 --- a/macosx/StatusBarView.m +++ b/macosx/StatusBarView.m @@ -23,6 +23,8 @@ *****************************************************************************/ #import "StatusBarView.h" +#import "NSApplicationAdditions.h" +#import @interface StatusBarView (Private) @@ -40,10 +42,26 @@ NSColor * darkColor = [NSColor colorWithCalibratedRed: 155.0/255.0 green: 155.0/255.0 blue: 155.0/255.0 alpha: 1.0]; fGradient = [[NSGradient alloc] initWithStartingColor: lightColor endingColor: darkColor]; - [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reload) - name: NSWindowDidBecomeMainNotification object: [self window]]; - [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reload) - name: NSWindowDidResignMainNotification object: [self window]]; + //noise only for 10.7 + + if([NSApp isOnLionOrBetter]) + { + CIFilter * randomFilter = [CIFilter filterWithName: @"CIRandomGenerator"]; + [randomFilter setDefaults]; + + fNoiseImage = [randomFilter valueForKey: @"outputImage"]; + + CIFilter * monochromeFilter = [CIFilter filterWithName: @"CIColorMonochrome"]; + [monochromeFilter setDefaults]; + [monochromeFilter setValue: fNoiseImage forKey: @"inputImage"]; + CIColor * monoFilterColor = [CIColor colorWithRed:1.0 green:1.0 blue:1.0]; + [monochromeFilter setValue: monoFilterColor forKey: @"inputColor"]; + fNoiseImage = [[monochromeFilter valueForKey:@"outputImage"] retain]; + } + else + fNoiseImage = nil; + + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reload) name: NSWindowDidBecomeMainNotification object: [self window]]; + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reload) name: NSWindowDidResignMainNotification object: [self window]]; } return self; } @@ -51,7 +69,7 @@ - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; - + [fNoiseImage release]; [fGradient release]; [super dealloc]; } @@ -115,6 +133,11 @@ } NSRectFillListWithColors(gridRects, colorRects, count); + + [fNoiseImage drawInRect: rect + fromRect: [self convertRectToBacking: rect] + operation: NSCompositeSourceOver + fraction: 0.15]; } @end