Skip to content
Snippets Groups Projects
Commit 76e3e510 authored by George Nachman's avatar George Nachman
Browse files

Update colorpicker to use latest project settings and warnings. Fix a bug...

Update colorpicker to use latest project settings and warnings. Fix a bug where the eyedropper window is never hidden on 10.13. Issue 6171
parent 83599206
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -574,7 +574,7 @@
A6184E9F1BA874020088EF3C /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0700;
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = Google;
TargetAttributes = {
A6184EA71BA874020088EF3C = {
Loading
Loading
@@ -740,13 +740,21 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
Loading
Loading
@@ -786,13 +794,21 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
Loading
Loading
Loading
Loading
@@ -12,19 +12,19 @@ extern NSString *const kCPKUseSystemColorPicker;
@property(nonatomic) BOOL removeEnabled;
 
/** Block called when you clicks on "No Color". */
@property(nonatomic, copy) void (^selectNoColorBlock)();
@property(nonatomic, copy) void (^selectNoColorBlock)(void);
 
/** Block called when user clicks on "Add Favorite". */
@property(nonatomic, copy) void (^addFavoriteBlock)();
@property(nonatomic, copy) void (^addFavoriteBlock)(void);
 
/** Block called when user clicks on "Remove Favorite". */
@property(nonatomic, copy) void (^removeFavoriteBlock)();
@property(nonatomic, copy) void (^removeFavoriteBlock)(void);
 
/** Block called when user clicks on the eyedropper. */
@property(nonatomic, copy) void (^startPickingBlock)();
@property(nonatomic, copy) void (^startPickingBlock)(void);
 
/** Replace popover with native color picker. */
@property(nonatomic, copy) void (^useNativeColorPicker)();
@property(nonatomic, copy) void (^useNativeColorPicker)(void);
 
/**
* Use the system color picker? Setting this to YES opens the picker and adjusts the icon to
Loading
Loading
Loading
Loading
@@ -136,7 +136,7 @@ NSString *const kCPKUseSystemColorPicker = @"kCPKUseSystemColorPicker";
[self cpk_imageNamed:@"EscapeHatch"];
if (_useNativeColorPicker) {
__weak __typeof(self) weakSelf = self;
weakSelf.useNativeColorPicker(useSystemColorPicker);
weakSelf.useNativeColorPicker();
}
}
 
Loading
Loading
Loading
Loading
@@ -9,6 +9,6 @@
@property(nonatomic) NSArray *colors;
 
/** Called on click. */
@property(nonatomic, copy) void (^click)();
@property(nonatomic, copy) void (^click)(void);
 
@end
Loading
Loading
@@ -12,6 +12,6 @@
* @return The selected color, or nil if the pick is aborted (e.g., by another application becoming
* active).
*/
+ (NSColor *)pickColor;
+ (void)pickColorWithCompletion:(void (^)(NSColor *color))completion;
 
@end
Loading
Loading
@@ -25,7 +25,7 @@ const NSTimeInterval kUpdateInterval = 1.0 / 60.0;
return origin;
}
 
+ (NSColor *)pickColor {
+ (void)pickColorWithCompletion:(void (^)(NSColor *color))completion {
NSPoint origin = [CPKEyedropperWindow origin];
NSRect frame = NSMakeRect(origin.x, origin.y, kSize, kSize);
CPKEyedropperWindow *eyedropperWindow =
Loading
Loading
@@ -42,17 +42,26 @@ const NSTimeInterval kUpdateInterval = 1.0 / 60.0;
eyedropperWindow.eyedropperView.click = ^() { [weakWindow stop]; };
eyedropperWindow.contentView = eyedropperWindow.eyedropperView;
 
// Doesn't work if you do it immediately.
// It takes a spin of the mainloop for this to take effect
eyedropperWindow.level = NSMainMenuWindowLevel + 1;
dispatch_async(dispatch_get_main_queue(), ^{
eyedropperWindow.level = NSMainMenuWindowLevel + 1;
[eyedropperWindow finishPickingColorWithCompletion:completion];
});
}
- (void)finishPickingColorWithCompletion:(void (^)(NSColor *color))completion {
[[NSCursor crosshairCursor] push];
[eyedropperWindow doPick];
[self doPick];
[[NSCursor crosshairCursor] pop];
if (eyedropperWindow.selectedColor.alphaComponent == 0) {
return nil;
NSColor *selectedColor = [self selectedColor];
if (@available(macOS 10.13, *)) {
[self orderOut:nil];
}
if (selectedColor.alphaComponent == 0) {
completion(nil);
} else {
return eyedropperWindow.selectedColor;
completion(selectedColor);
}
}
 
Loading
Loading
Loading
Loading
@@ -17,7 +17,7 @@ static const CGFloat kBottomMargin = 8;
 
@interface CPKMainViewController ()<CPKSelectionViewDelegate>
@property(nonatomic, copy) void (^block)(NSColor *);
@property(nonatomic, copy) void (^useSystemColorPickerBlock)();
@property(nonatomic, copy) void (^useSystemColorPickerBlock)(void);
@property(nonatomic) NSColor *selectedColor;
@property(nonatomic) CGFloat desiredHeight;
@property(nonatomic) CPKSelectionView *selectionView;
Loading
Loading
@@ -114,10 +114,11 @@ static const CGFloat kBottomMargin = 8;
[weakSelf.favoritesView removeSelectedFavorites];
};
self.controlsView.startPickingBlock = ^() {
NSColor *color = [CPKEyedropperWindow pickColor];
if (color) {
weakSelf.selectionView.selectedColor = color;
}
[CPKEyedropperWindow pickColorWithCompletion:^(NSColor *color) {
if (color) {
weakSelf.selectionView.selectedColor = color;
}
}];
};
self.controlsView.useNativeColorPicker = ^() {
if (weakSelf.useSystemColorPickerBlock) {
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment