Get compiling against 10.10 SDK

This commit is contained in:
Kevin Sawicki 2017-02-27 10:30:41 -08:00
parent 2a00bb30c5
commit 52905ae9b3
3 changed files with 188 additions and 17 deletions

View file

@ -7,6 +7,7 @@
#include <Quartz/Quartz.h> #include <Quartz/Quartz.h>
#include <string> #include <string>
#include "atom/browser/ui/cocoa/touch_bar_forward_declarations.h"
#include "atom/browser/window_list.h" #include "atom/browser/window_list.h"
#include "atom/common/color_util.h" #include "atom/common/color_util.h"
#include "atom/common/draggable_region.h" #include "atom/common/draggable_region.h"
@ -355,14 +356,14 @@ bool ScopedDisableResize::disable_resize_ = false;
- (void)reloadTouchBar; - (void)reloadTouchBar;
- (void)refreshTouchBarItem:(mate::Arguments*)args; - (void)refreshTouchBarItem:(mate::Arguments*)args;
- (void)resetTouchBar; - (void)resetTouchBar;
- (NSTouchBar*)touchBarFromMutatableArray:(NSMutableArray<NSTouchBarItemIdentifier>*)items; - (NSTouchBar*)touchBarFromMutatableArray:(NSMutableArray*)items;
@end @end
@interface AtomNSWindow () <NSTouchBarDelegate> @interface AtomNSWindow () <NSTouchBarDelegate>
@end @end
@implementation AtomNSWindow @implementation AtomNSWindow
NSMutableArray<NSTouchBarItemIdentifier>* bar_items_ = [[NSMutableArray alloc] init]; NSMutableArray* bar_items_ = [[NSMutableArray alloc] init];
std::map<std::string, mate::PersistentDictionary> item_id_map; std::map<std::string, mate::PersistentDictionary> item_id_map;
std::map<std::string, NSTouchBarItem*> item_map; std::map<std::string, NSTouchBarItem*> item_map;
@ -376,11 +377,11 @@ bool ScopedDisableResize::disable_resize_ = false;
- (void)resetTouchBar { - (void)resetTouchBar {
bar_items_ = [[NSMutableArray alloc] init]; bar_items_ = [[NSMutableArray alloc] init];
self.touchBar = nil; // self.touchBar = nil;
} }
- (NSMutableArray<NSTouchBarItemIdentifier>*)identifierArrayFromDicts:(std::vector<mate::PersistentDictionary>)dicts { - (NSMutableArray*)identifierArrayFromDicts:(std::vector<mate::PersistentDictionary>)dicts {
NSMutableArray<NSTouchBarItemIdentifier>* idents = [[NSMutableArray alloc] init]; NSMutableArray* idents = [[NSMutableArray alloc] init];
for (mate::PersistentDictionary &item : dicts) { for (mate::PersistentDictionary &item : dicts) {
std::string type; std::string type;
@ -434,15 +435,15 @@ bool ScopedDisableResize::disable_resize_ = false;
std::map<std::string, mate::PersistentDictionary> new_map; std::map<std::string, mate::PersistentDictionary> new_map;
item_id_map = new_map; item_id_map = new_map;
bar_items_ = [self identifierArrayFromDicts:shell_->GetTouchBarItems()]; bar_items_ = [self identifierArrayFromDicts:shell_->GetTouchBarItems()];
self.touchBar = nil; // self.touchBar = nil;
} }
- (NSTouchBar *)makeTouchBar { - (NSTouchBar*)makeTouchBar {
return [self touchBarFromMutatableArray:bar_items_]; return [self touchBarFromMutatableArray:bar_items_];
} }
- (NSTouchBar *)touchBarFromMutatableArray:(NSMutableArray<NSTouchBarItemIdentifier>*)items { - (NSTouchBar*)touchBarFromMutatableArray:(NSMutableArray*)items {
NSTouchBar* bar = [[NSTouchBar alloc] init]; NSTouchBar* bar = [[NSClassFromString(@"NSTouchBar") alloc] init];
bar.delegate = self; bar.delegate = self;
bar.defaultItemIdentifiers = [items copy]; bar.defaultItemIdentifiers = [items copy];
@ -534,7 +535,7 @@ bool ScopedDisableResize::disable_resize_ = false;
std::string s_id = std::string([id UTF8String]); std::string s_id = std::string([id UTF8String]);
if (![self hasTBDict:s_id]) return nil; if (![self hasTBDict:s_id]) return nil;
mate::PersistentDictionary item = item_id_map[s_id]; mate::PersistentDictionary item = item_id_map[s_id];
NSCustomTouchBarItem *customItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier]; NSCustomTouchBarItem *customItem = [[NSClassFromString(@"NSCustomTouchBarItem") alloc] initWithIdentifier:identifier];
return [self updateButton:customItem withOpts:item withID:id andCreate:true]; return [self updateButton:customItem withOpts:item withID:id andCreate:true];
} }
@ -566,7 +567,7 @@ bool ScopedDisableResize::disable_resize_ = false;
std::string s_id = std::string([id UTF8String]); std::string s_id = std::string([id UTF8String]);
if (![self hasTBDict:s_id]) return nil; if (![self hasTBDict:s_id]) return nil;
mate::PersistentDictionary item = item_id_map[s_id]; mate::PersistentDictionary item = item_id_map[s_id];
NSCustomTouchBarItem *customItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier]; NSCustomTouchBarItem *customItem = [[NSClassFromString(@"NSCustomTouchBarItem") alloc] initWithIdentifier:identifier];
return [self updateLabel:customItem withOpts:item]; return [self updateLabel:customItem withOpts:item];
} }
@ -591,7 +592,7 @@ bool ScopedDisableResize::disable_resize_ = false;
std::string s_id = std::string([id UTF8String]); std::string s_id = std::string([id UTF8String]);
if (![self hasTBDict:s_id]) return nil; if (![self hasTBDict:s_id]) return nil;
mate::PersistentDictionary item = item_id_map[s_id]; mate::PersistentDictionary item = item_id_map[s_id];
NSColorPickerTouchBarItem *colorPickerItem = [[NSColorPickerTouchBarItem alloc] initWithIdentifier:identifier]; NSColorPickerTouchBarItem *colorPickerItem = [[NSClassFromString(@"NSColorPickerTouchBarItem") alloc] initWithIdentifier:identifier];
return [self updateColorPicker:colorPickerItem withOpts:item]; return [self updateColorPicker:colorPickerItem withOpts:item];
} }
@ -611,7 +612,7 @@ bool ScopedDisableResize::disable_resize_ = false;
std::string s_id = std::string([id UTF8String]); std::string s_id = std::string([id UTF8String]);
if (![self hasTBDict:s_id]) return nil; if (![self hasTBDict:s_id]) return nil;
mate::PersistentDictionary item = item_id_map[s_id]; mate::PersistentDictionary item = item_id_map[s_id];
NSSliderTouchBarItem *sliderItem = [[NSSliderTouchBarItem alloc] initWithIdentifier:identifier]; NSSliderTouchBarItem *sliderItem = [[NSClassFromString(@"NSSliderTouchBarItem") alloc] initWithIdentifier:identifier];
return [self updateSlider:sliderItem withOpts:item]; return [self updateSlider:sliderItem withOpts:item];
} }
@ -647,7 +648,7 @@ bool ScopedDisableResize::disable_resize_ = false;
std::string s_id = std::string([id UTF8String]); std::string s_id = std::string([id UTF8String]);
if (![self hasTBDict:s_id]) return nil; if (![self hasTBDict:s_id]) return nil;
mate::PersistentDictionary item = item_id_map[s_id]; mate::PersistentDictionary item = item_id_map[s_id];
NSPopoverTouchBarItem *popOverItem = [[NSPopoverTouchBarItem alloc] initWithIdentifier:identifier]; NSPopoverTouchBarItem *popOverItem = [[NSClassFromString(@"NSPopoverTouchBarItem") alloc] initWithIdentifier:identifier];
return [self updatePopOver:popOverItem withOpts:item]; return [self updatePopOver:popOverItem withOpts:item];
} }
@ -690,8 +691,8 @@ bool ScopedDisableResize::disable_resize_ = false;
return nil; return nil;
} }
NSMutableArray<NSTouchBarItem*>* generatedItems = [[NSMutableArray alloc] init]; NSMutableArray* generatedItems = [[NSMutableArray alloc] init];
NSMutableArray<NSString*>* identList = [self identifierArrayFromDicts:items]; NSMutableArray* identList = [self identifierArrayFromDicts:items];
for (NSUInteger i = 0; i < [identList count]; i++) { for (NSUInteger i = 0; i < [identList count]; i++) {
if ([identList objectAtIndex:i] != NSTouchBarItemIdentifierOtherItemsProxy) { if ([identList objectAtIndex:i] != NSTouchBarItemIdentifierOtherItemsProxy) {
NSTouchBarItem* generatedItem = [self makeItemForIdentifier:[identList objectAtIndex:i]]; NSTouchBarItem* generatedItem = [self makeItemForIdentifier:[identList objectAtIndex:i]];
@ -700,7 +701,7 @@ bool ScopedDisableResize::disable_resize_ = false;
} }
} }
} }
NSGroupTouchBarItem *groupItem = [NSGroupTouchBarItem groupItemWithIdentifier:identifier items:generatedItems]; NSGroupTouchBarItem *groupItem = [NSClassFromString(@"NSGroupTouchBarItem") groupItemWithIdentifier:identifier items:generatedItems];
std::string customizationLabel; std::string customizationLabel;
if (item.Get("customizationLabel", &customizationLabel)) { if (item.Get("customizationLabel", &customizationLabel)) {

View file

@ -0,0 +1,169 @@
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_UI_COCOA_TOUCH_BAR_FORWARD_DECLARATIONS_H_
#define ATOM_BROWSER_UI_COCOA_TOUCH_BAR_FORWARD_DECLARATIONS_H_
// Once Chrome no longer supports OSX 10.12.0, this file can be deleted.
#import <Foundation/Foundation.h>
#if !defined(MAC_OS_X_VERSION_10_12_1)
#pragma clang assume_nonnull begin
@class NSTouchBar, NSTouchBarItem;
@protocol NSTouchBarDelegate;
typedef float NSTouchBarItemPriority;
static const NSTouchBarItemPriority NSTouchBarItemPriorityHigh = 1000;
static const NSTouchBarItemPriority NSTouchBarItemPriorityNormal = 0;
static const NSTouchBarItemPriority NSTouchBarItemPriorityLow = -1000;
typedef NSString* NSTouchBarItemIdentifier;
typedef NSString* NSTouchBarCustomizationIdentifier;
static const NSTouchBarItemIdentifier NSTouchBarItemIdentifierFixedSpaceSmall =
@"NSTouchBarItemIdentifierFixedSpaceSmall";
static const NSTouchBarItemIdentifier NSTouchBarItemIdentifierFlexibleSpace =
@"NSTouchBarItemIdentifierFlexibleSpace";
static const NSTouchBarItemIdentifier NSTouchBarItemIdentifierOtherItemsProxy =
@"NSTouchBarItemIdentifierOtherItemsProxy";
@interface NSTouchBar : NSObject<NSCoding>
- (instancetype)init NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder*)aDecoder
NS_DESIGNATED_INITIALIZER;
@property(copy, nullable)
NSTouchBarCustomizationIdentifier customizationIdentifier;
@property(copy) NSArray* customizationAllowedItemIdentifiers;
@property(copy) NSArray* customizationRequiredItemIdentifiers;
@property(copy) NSArray* defaultItemIdentifiers;
@property(copy, readonly) NSArray* itemIdentifiers;
@property(copy, nullable) NSTouchBarItemIdentifier principalItemIdentifier;
@property(copy) NSSet* templateItems;
@property(nullable, weak) id<NSTouchBarDelegate> delegate;
- (nullable __kindof NSTouchBarItem*)itemForIdentifier:
(NSTouchBarItemIdentifier)identifier;
@property(readonly, getter=isVisible) BOOL visible;
@end
@interface NSTouchBarItem : NSObject<NSCoding>
- (instancetype)initWithIdentifier:(NSTouchBarItemIdentifier)identifier
NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder*)coder
NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;
@property(readonly, copy) NSTouchBarItemIdentifier identifier;
@property NSTouchBarItemPriority visibilityPriority;
@property(readonly, nullable) NSView* view;
@property(readonly, nullable) NSViewController* viewController;
@property(readwrite, copy) NSString* customizationLabel;
@property(readonly, getter=isVisible) BOOL visible;
@end
@interface NSGroupTouchBarItem : NSTouchBarItem
+ (NSGroupTouchBarItem*)groupItemWithIdentifier:
(NSTouchBarItemIdentifier)identifier
items:(NSArray*)items;
@property(strong) NSTouchBar* groupTouchBar;
@property(readwrite, copy, null_resettable) NSString* customizationLabel;
@end
@interface NSCustomTouchBarItem : NSTouchBarItem
@property(readwrite, strong) __kindof NSView* view;
@property(readwrite, strong, nullable)
__kindof NSViewController* viewController;
@property(readwrite, copy, null_resettable) NSString* customizationLabel;
@end
@interface NSColorPickerTouchBarItem : NSTouchBarItem
@property SEL action;
@property(weak) id target;
@property(copy) NSColor *color;
@end
@interface NSPopoverTouchBarItem : NSTouchBarItem
@property BOOL showsCloseButton;
@property(strong) NSImage *collapsedRepresentationImage;
@property(strong) NSString *collapsedRepresentationLabel;
@property(strong) NSTouchBar *popoverTouchBar;
@end
@interface NSSliderTouchBarItem : NSTouchBarItem
@property SEL action;
@property(weak) id target;
@property(copy) NSString *label;
@property(strong) NSSlider *slider;
@end
@interface NSWindow (TouchBarSDK)
@property(strong, readonly) NSTouchBar* touchBar;
@end
@interface NSButton (TouchBarSDK)
@property(copy) NSColor *bezelColor;
+ (instancetype)buttonWithTitle:(NSString *)title
target:(id)target
action:(SEL)action;
@end
@interface NSTextField (TouchBarSDK)
+ (instancetype)labelWithString:(NSString *)stringValue;
@end
@protocol NSTouchBarDelegate<NSObject>
@optional
- (nullable NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar
makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier;
@end
#pragma clang assume_nonnull end
#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_1
// When compiling against the 10.12.1 SDK or later, just provide forward
// declarations to suppress the partial availability warnings.
@class NSCustomTouchBarItem;
@class NSGroupTouchBarItem;
@class NSTouchBar;
@protocol NSTouchBarDelegate;
@class NSTouchBarItem;
@interface NSWindow (TouchBarSDK)
@property(strong, readonly) NSTouchBar* touchBar;
@end
#endif // MAC_OS_X_VERSION_10_12_1
#endif // ATOM_BROWSER_UI_COCOA_TOUCH_BAR_FORWARD_DECLARATIONS_H_

View file

@ -281,6 +281,7 @@
'atom/browser/ui/atom_menu_model.h', 'atom/browser/ui/atom_menu_model.h',
'atom/browser/ui/cocoa/atom_menu_controller.h', 'atom/browser/ui/cocoa/atom_menu_controller.h',
'atom/browser/ui/cocoa/atom_menu_controller.mm', 'atom/browser/ui/cocoa/atom_menu_controller.mm',
'atom/browser/ui/cocoa/touch_bar_forward_declarations.h',
'atom/browser/ui/drag_util_mac.mm', 'atom/browser/ui/drag_util_mac.mm',
'atom/browser/ui/drag_util_views.cc', 'atom/browser/ui/drag_util_views.cc',
'atom/browser/ui/drag_util.h', 'atom/browser/ui/drag_util.h',