diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPTableFooterPopUpButtonCell.h | 39 | ||||
-rw-r--r-- | Source/SPTableFooterPopUpButtonCell.m | 55 |
2 files changed, 94 insertions, 0 deletions
diff --git a/Source/SPTableFooterPopUpButtonCell.h b/Source/SPTableFooterPopUpButtonCell.h new file mode 100644 index 00000000..63e431ae --- /dev/null +++ b/Source/SPTableFooterPopUpButtonCell.h @@ -0,0 +1,39 @@ +// +// SPTableFooterPopUpButtonCell.h +// sequel-pro +// +// Created by Woody Beckert on 15/04/2016. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// More info at <https://github.com/sequelpro/sequelpro> +// + +// NSPopUpButtonCell ignores the alternate image value specified in the xib. +// This class draws it while highlighted, which is now NSButtonCell can be +// configured to work. + +#import <Cocoa/Cocoa.h> + +@interface SPTableFooterPopUpButtonCell : NSPopUpButtonCell + +@end diff --git a/Source/SPTableFooterPopUpButtonCell.m b/Source/SPTableFooterPopUpButtonCell.m new file mode 100644 index 00000000..f01e98ee --- /dev/null +++ b/Source/SPTableFooterPopUpButtonCell.m @@ -0,0 +1,55 @@ +// +// SPTableFooterPopUpButtonCell.m +// sequel-pro +// +// Created by Woody Beckert on 15/04/2016. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// More info at <https://github.com/sequelpro/sequelpro> +// + +#import "SPTableFooterPopUpButtonCell.h" + +@implementation SPTableFooterPopUpButtonCell + +- (void)drawImageWithFrame:(NSRect)cellRect inView:(NSView *)controlView{ + NSImage *image = self.image; + if([self isHighlighted] && self.alternateImage){ + image = self.alternateImage; + } + + //TODO: respect -(NSCellImagePosition)imagePosition + NSRect imageRect = NSZeroRect; + imageRect.origin.y = (CGFloat)round(cellRect.size.height*0.5f-image.size.height*0.5f); + imageRect.origin.x = (CGFloat)round(cellRect.size.width*0.5f-image.size.width*0.5f); + imageRect.size = image.size; + + [image drawInRect:imageRect + fromRect:NSZeroRect + operation:NSCompositeSourceOver + fraction:1.0f + respectFlipped:YES + hints:nil]; +} + +@end |