From fa01dea4ec70d12a8b2db48e26b50271451a16e1 Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Tue, 4 Jun 2013 21:24:19 -0400 Subject: [PATCH 1/4] _statusItem dangles and setup + unsquashing of status image. [FIXED] _statusItem wasn't retained. [FIXED] It's silly to make the application set up the status item's highlightMode and view; RHStatusItemView doesn't work properly without and can do it fine itself. [FIXED] Don't squash status image; center-crop, like the default behavior of NSStatusItem.image. --- RHStatusItemView/RHStatusItemView.m | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/RHStatusItemView/RHStatusItemView.m b/RHStatusItemView/RHStatusItemView.m index 1013ebe..1ce1a62 100644 --- a/RHStatusItemView/RHStatusItemView.m +++ b/RHStatusItemView/RHStatusItemView.m @@ -27,10 +27,6 @@ // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -static CGFloat RHStatusItemViewImageHPadding = 4.0f; -static CGFloat RHStatusItemViewImageVPadding = 3.0f; - - #import "RHStatusItemView.h" @implementation RHStatusItemView @@ -84,7 +80,10 @@ - (void)dealloc{ #pragma mark - properties -(void)setStatusItem:(NSStatusItem *)statusItem{ if (!statusItem) [NSException raise:NSInvalidArgumentException format:@"-[%@ %@] statusItem should not be nil!", NSStringFromClass(self.class), NSStringFromSelector(_cmd)]; - _statusItem = statusItem; + [_statusItem release]; + _statusItem = [statusItem retain]; + _statusItem.highlightMode = YES; + _statusItem.view = self; } -(void)setImage:(NSImage *)image{ @@ -113,14 +112,14 @@ - (void)drawRect:(NSRect)rect { // Draw status bar background, highlighted if menu is showing [_statusItem drawStatusBarBackgroundInRect:[self bounds] withHighlight:highlighted]; - NSRect imageRect = NSInsetRect(self.bounds, RHStatusItemViewImageHPadding, RHStatusItemViewImageVPadding); - imageRect.origin.y++; //move it up one pix + NSImage *image = self.image; + if (highlighted && self.alternateImage) + image = self.alternateImage; - if (highlighted){ - [self.alternateImage drawInRect:imageRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1]; - } else { - [self.image drawInRect:imageRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1]; - } + [image drawInRect:self.bounds fromRect:CGRectMake(image.size.width / 2 - self.bounds.size.width / 2, + image.size.height / 2 - self.bounds.size.height / 2, + self.bounds.size.width, self.bounds.size.height) + operation:NSCompositeSourceOver fraction:1]; } From 039dc04e667199396765dd394b70e3f38f04ea33 Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Sun, 16 Jun 2013 12:30:39 -0400 Subject: [PATCH 2/4] fromRect: takes an NSRect, not a CGRect. --- RHStatusItemView/RHStatusItemView.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/RHStatusItemView/RHStatusItemView.m b/RHStatusItemView/RHStatusItemView.m index 1ce1a62..5fc7275 100644 --- a/RHStatusItemView/RHStatusItemView.m +++ b/RHStatusItemView/RHStatusItemView.m @@ -115,10 +115,11 @@ - (void)drawRect:(NSRect)rect { NSImage *image = self.image; if (highlighted && self.alternateImage) image = self.alternateImage; - - [image drawInRect:self.bounds fromRect:CGRectMake(image.size.width / 2 - self.bounds.size.width / 2, - image.size.height / 2 - self.bounds.size.height / 2, - self.bounds.size.width, self.bounds.size.height) + + [image drawInRect:self.bounds fromRect:NSRectFromCGRect( + CGRectMake( image.size.width / 2 - self.bounds.size.width / 2, + image.size.height / 2 - self.bounds.size.height / 2, + self.bounds.size.width, self.bounds.size.height ) ) operation:NSCompositeSourceOver fraction:1]; } From 542d5f6ece7cf9745ffb2e0379d07c861873e07b Mon Sep 17 00:00:00 2001 From: Jens Dutzi Date: Fri, 10 Jan 2014 16:19:16 +0100 Subject: [PATCH 3/4] Umstellung auf ARC (Automatic) --- RHStatusItemView.xcodeproj/project.pbxproj | 11 ++-- .../xcshareddata/RHStatusItemView.xccheckout | 41 ++++++++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 10787 bytes .../WorkspaceSettings.xcsettings | 10 +++ .../xcschemes/RHStatusItemView.xcscheme | 59 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 22 +++++++ RHStatusItemView/RHStatusItemView.h | 12 ++-- RHStatusItemView/RHStatusItemView.m | 15 +---- 8 files changed, 148 insertions(+), 22 deletions(-) create mode 100644 RHStatusItemView.xcodeproj/project.xcworkspace/xcshareddata/RHStatusItemView.xccheckout create mode 100644 RHStatusItemView.xcodeproj/project.xcworkspace/xcuserdata/jens.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 RHStatusItemView.xcodeproj/project.xcworkspace/xcuserdata/jens.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 RHStatusItemView.xcodeproj/xcuserdata/jens.xcuserdatad/xcschemes/RHStatusItemView.xcscheme create mode 100644 RHStatusItemView.xcodeproj/xcuserdata/jens.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/RHStatusItemView.xcodeproj/project.pbxproj b/RHStatusItemView.xcodeproj/project.pbxproj index 64cb4d7..f0da13e 100644 --- a/RHStatusItemView.xcodeproj/project.pbxproj +++ b/RHStatusItemView.xcodeproj/project.pbxproj @@ -190,7 +190,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_EMPTY_BODY = YES; @@ -209,7 +208,8 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.7; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; }; name = Debug; @@ -218,7 +218,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_EMPTY_BODY = YES; @@ -231,7 +230,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.7; + MACOSX_DEPLOYMENT_TARGET = 10.8; SDKROOT = macosx; }; name = Release; @@ -239,6 +238,8 @@ 131B4ED31627AD6D00CCF430 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; COMBINE_HIDPI_IMAGES = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -255,6 +256,8 @@ 131B4ED41627AD6D00CCF430 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; COMBINE_HIDPI_IMAGES = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; diff --git a/RHStatusItemView.xcodeproj/project.xcworkspace/xcshareddata/RHStatusItemView.xccheckout b/RHStatusItemView.xcodeproj/project.xcworkspace/xcshareddata/RHStatusItemView.xccheckout new file mode 100644 index 0000000..f454ed4 --- /dev/null +++ b/RHStatusItemView.xcodeproj/project.xcworkspace/xcshareddata/RHStatusItemView.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + F6B5F711-AA9F-469C-BD86-D17EB4822F5A + IDESourceControlProjectName + RHStatusItemView + IDESourceControlProjectOriginsDictionary + + 5AE9B92A-9F83-43F9-BAE0-ECCB2F29E1AF + https://github.com/heardrwt/RHStatusItemView.git + + IDESourceControlProjectPath + RHStatusItemView.xcodeproj/project.xcworkspace + IDESourceControlProjectRelativeInstallPathDictionary + + 5AE9B92A-9F83-43F9-BAE0-ECCB2F29E1AF + ../.. + + IDESourceControlProjectURL + https://github.com/heardrwt/RHStatusItemView.git + IDESourceControlProjectVersion + 110 + IDESourceControlProjectWCCIdentifier + 5AE9B92A-9F83-43F9-BAE0-ECCB2F29E1AF + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + 5AE9B92A-9F83-43F9-BAE0-ECCB2F29E1AF + IDESourceControlWCCName + RHStatusItemView + + + + diff --git a/RHStatusItemView.xcodeproj/project.xcworkspace/xcuserdata/jens.xcuserdatad/UserInterfaceState.xcuserstate b/RHStatusItemView.xcodeproj/project.xcworkspace/xcuserdata/jens.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..994b2111609f46bce193968a47ddb64c078ef5aa GIT binary patch literal 10787 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 + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/RHStatusItemView.xcodeproj/xcuserdata/jens.xcuserdatad/xcschemes/RHStatusItemView.xcscheme b/RHStatusItemView.xcodeproj/xcuserdata/jens.xcuserdatad/xcschemes/RHStatusItemView.xcscheme new file mode 100644 index 0000000..b782e57 --- /dev/null +++ b/RHStatusItemView.xcodeproj/xcuserdata/jens.xcuserdatad/xcschemes/RHStatusItemView.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RHStatusItemView.xcodeproj/xcuserdata/jens.xcuserdatad/xcschemes/xcschememanagement.plist b/RHStatusItemView.xcodeproj/xcuserdata/jens.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..4bc11dd --- /dev/null +++ b/RHStatusItemView.xcodeproj/xcuserdata/jens.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + RHStatusItemView.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 131B4EBC1627AD6D00CCF430 + + primary + + + + + diff --git a/RHStatusItemView/RHStatusItemView.h b/RHStatusItemView/RHStatusItemView.h index 3f36e91..0e0bdec 100644 --- a/RHStatusItemView/RHStatusItemView.h +++ b/RHStatusItemView/RHStatusItemView.h @@ -48,17 +48,17 @@ BOOL _isMenuVisible; } -@property (nonatomic, assign) NSStatusItem *statusItem; //should never be nil +@property (nonatomic) NSStatusItem *statusItem; //should never be nil -@property (nonatomic, retain) NSImage *image; -@property (nonatomic, retain) NSImage *alternateImage; +@property (nonatomic, strong) NSImage *image; +@property (nonatomic, strong) NSImage *alternateImage; -@property (nonatomic, retain) id target; +@property (nonatomic, strong) id target; @property (nonatomic, assign) SEL action; //if no action specified, we will try and pop up menu if set. @property (nonatomic, assign) SEL rightAction; //if no rightAction specified, we will try and pop up, in order rightMenu, menu. -@property (nonatomic, retain) NSMenu *menu; -@property (nonatomic, retain) NSMenu *rightMenu; +@property (nonatomic, strong) NSMenu *menu; +@property (nonatomic, strong) NSMenu *rightMenu; -(id)initWithStatusBarItem:(NSStatusItem*)statusItem; //designated initializer diff --git a/RHStatusItemView/RHStatusItemView.m b/RHStatusItemView/RHStatusItemView.m index 5fc7275..34bd7ea 100644 --- a/RHStatusItemView/RHStatusItemView.m +++ b/RHStatusItemView/RHStatusItemView.m @@ -62,34 +62,26 @@ -(id)initWithStatusBarItem:(NSStatusItem*)statusItem{ - (void)dealloc{ _statusItem = nil; - [_image release]; _image = nil; - [_alternateImage release]; _alternateImage = nil; - [_target release]; _target = nil; _action = NULL; _rightAction = NULL; - [_menu release]; _menu = nil; - [_rightMenu release]; _rightMenu = nil; - [super dealloc]; } #pragma mark - properties -(void)setStatusItem:(NSStatusItem *)statusItem{ if (!statusItem) [NSException raise:NSInvalidArgumentException format:@"-[%@ %@] statusItem should not be nil!", NSStringFromClass(self.class), NSStringFromSelector(_cmd)]; - [_statusItem release]; - _statusItem = [statusItem retain]; + _statusItem = statusItem; _statusItem.highlightMode = YES; _statusItem.view = self; } -(void)setImage:(NSImage *)image{ if (image != _image){ - [_image release]; - _image = [image retain]; + _image = image; } [self setNeedsDisplay]; @@ -97,8 +89,7 @@ -(void)setImage:(NSImage *)image{ -(void)setAlternateImage:(NSImage *)alternateImage{ if (alternateImage != _alternateImage){ - [_alternateImage release]; - _alternateImage = [alternateImage retain]; + _alternateImage = alternateImage; } [self setNeedsDisplay]; From a8811be0bd4d2b510ea7d4d42e8057dd6b5c639f Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Sun, 26 Oct 2014 12:02:24 -0400 Subject: [PATCH 4/4] -menu is also inherited. Don't override. --- RHStatusItemView/RHStatusItemView.h | 5 ++--- RHStatusItemView/RHStatusItemView.m | 2 -- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/RHStatusItemView/RHStatusItemView.h b/RHStatusItemView/RHStatusItemView.h index 323cc74..d1f51ee 100644 --- a/RHStatusItemView/RHStatusItemView.h +++ b/RHStatusItemView/RHStatusItemView.h @@ -54,9 +54,8 @@ // NSControl provides these for us //@property (weak) id target; //@property SEL action; //if no action specified, we will try and pop up menu if set. -@property SEL rightAction; //if no rightAction specified, we will try and pop up, in order rightMenu, menu. - -@property (nonatomic, strong) NSMenu *menu; +//@property (strong) NSMenu *menu; +@property (nonatomic) SEL rightAction; //if no rightAction specified, we will try and pop up, in order rightMenu, menu. @property (nonatomic, strong) NSMenu *rightMenu; -(id)initWithStatusBarItem:(NSStatusItem*)statusItem; //designated initializer diff --git a/RHStatusItemView/RHStatusItemView.m b/RHStatusItemView/RHStatusItemView.m index d9c9ccc..eae93d7 100644 --- a/RHStatusItemView/RHStatusItemView.m +++ b/RHStatusItemView/RHStatusItemView.m @@ -37,8 +37,6 @@ @implementation RHStatusItemView @synthesize alternateImage=_alternateImage; @synthesize rightAction=_rightAction; - -@synthesize menu=_menu; @synthesize rightMenu=_rightMenu;