chore: remove redundant @available checks (#34407)
* chore: require macOS 10.13 for Chromium * chore: fix lint
This commit is contained in:
parent
000c3d981c
commit
539a53786c
9 changed files with 121 additions and 217 deletions
|
@ -423,7 +423,6 @@ std::string SystemPreferences::GetSystemColor(gin_helper::ErrorThrower thrower,
|
|||
}
|
||||
|
||||
bool SystemPreferences::CanPromptTouchID() {
|
||||
if (@available(macOS 10.12.2, *)) {
|
||||
base::scoped_nsobject<LAContext> context([[LAContext alloc] init]);
|
||||
if (![context
|
||||
canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
|
||||
|
@ -433,8 +432,6 @@ bool SystemPreferences::CanPromptTouchID() {
|
|||
return [context biometryType] == LABiometryTypeTouchID;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
v8::Local<v8::Promise> SystemPreferences::PromptTouchID(
|
||||
v8::Isolate* isolate,
|
||||
|
@ -442,15 +439,12 @@ v8::Local<v8::Promise> SystemPreferences::PromptTouchID(
|
|||
gin_helper::Promise<void> promise(isolate);
|
||||
v8::Local<v8::Promise> handle = promise.GetHandle();
|
||||
|
||||
if (@available(macOS 10.12.2, *)) {
|
||||
base::scoped_nsobject<LAContext> context([[LAContext alloc] init]);
|
||||
base::ScopedCFTypeRef<SecAccessControlRef> access_control =
|
||||
base::ScopedCFTypeRef<SecAccessControlRef>(
|
||||
SecAccessControlCreateWithFlags(
|
||||
kCFAllocatorDefault,
|
||||
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
|
||||
kSecAccessControlPrivateKeyUsage |
|
||||
kSecAccessControlUserPresence,
|
||||
kCFAllocatorDefault, kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
|
||||
kSecAccessControlPrivateKeyUsage | kSecAccessControlUserPresence,
|
||||
nullptr));
|
||||
|
||||
scoped_refptr<base::SequencedTaskRunner> runner =
|
||||
|
@ -478,10 +472,7 @@ v8::Local<v8::Promise> SystemPreferences::PromptTouchID(
|
|||
std::move(p)));
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
promise.RejectWithErrorMessage(
|
||||
"This API is not available on macOS versions older than 10.12.2");
|
||||
}
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
||||
|
@ -529,7 +520,6 @@ std::string SystemPreferences::GetColor(gin_helper::ErrorThrower thrower,
|
|||
} else if (color == "quaternary-label") {
|
||||
sysColor = [NSColor quaternaryLabelColor];
|
||||
} else if (color == "scrubber-textured-background") {
|
||||
if (@available(macOS 10.12.2, *))
|
||||
sysColor = [NSColor scrubberTexturedBackgroundColor];
|
||||
} else if (color == "secondary-label") {
|
||||
sysColor = [NSColor secondaryLabelColor];
|
||||
|
|
|
@ -19,30 +19,6 @@
|
|||
|
||||
#import <UserNotifications/UserNotifications.h>
|
||||
|
||||
#if BUILDFLAG(USE_ALLOCATOR_SHIM)
|
||||
// On macOS 10.12, the IME system attempts to allocate a 2^64 size buffer,
|
||||
// which would typically cause an OOM crash. To avoid this, the problematic
|
||||
// method is swizzled out and the make-OOM-fatal bit is disabled for the
|
||||
// duration of the original call. https://crbug.com/654695
|
||||
static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session;
|
||||
@interface OOMDisabledIMKInputSession : NSObject
|
||||
@end
|
||||
@implementation OOMDisabledIMKInputSession
|
||||
- (void)_coreAttributesFromRange:(NSRange)range
|
||||
whichAttributes:(long long)attributes // NOLINT(runtime/int)
|
||||
completionHandler:(void (^)(void))block {
|
||||
// The allocator flag is per-process, so other threads may temporarily
|
||||
// not have fatal OOM occur while this method executes, but it is better
|
||||
// than crashing when using IME.
|
||||
base::allocator::SetCallNewHandlerOnMallocFailure(false);
|
||||
g_swizzle_imk_input_session->InvokeOriginal<
|
||||
void, NSRange, long long, void (^)(void)>( // NOLINT(runtime/int)
|
||||
self, _cmd, range, attributes, block);
|
||||
base::allocator::SetCallNewHandlerOnMallocFailure(true);
|
||||
}
|
||||
@end
|
||||
#endif // BUILDFLAG(USE_ALLOCATOR_SHIM)
|
||||
|
||||
static NSDictionary* UNNotificationResponseToNSDictionary(
|
||||
UNNotificationResponse* response) API_AVAILABLE(macosx(10.14)) {
|
||||
// [response isKindOfClass:[UNNotificationResponse class]]
|
||||
|
@ -109,16 +85,6 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
|
|||
|
||||
electron::Browser::Get()->DidFinishLaunching(
|
||||
electron::NSDictionaryToDictionaryValue(notification_info));
|
||||
|
||||
#if BUILDFLAG(USE_ALLOCATOR_SHIM)
|
||||
// Disable fatal OOM to hack around an OS bug https://crbug.com/654695.
|
||||
if (base::mac::IsOS10_12()) {
|
||||
g_swizzle_imk_input_session = new base::mac::ScopedObjCClassSwizzler(
|
||||
NSClassFromString(@"IMKInputSession"),
|
||||
[OOMDisabledIMKInputSession class],
|
||||
@selector(_coreAttributesFromRange:whichAttributes:completionHandler:));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(NSNotification*)notification {
|
||||
|
|
|
@ -220,14 +220,12 @@
|
|||
withLocal:product.priceLocale] UTF8String];
|
||||
|
||||
// Currency Information
|
||||
if (@available(macOS 10.12, *)) {
|
||||
if (product.priceLocale.currencyCode != nil) {
|
||||
productStruct.currencyCode =
|
||||
[product.priceLocale.currencyCode UTF8String];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (@available(macOS 10.13.2, *)) {
|
||||
if (product.introductoryPrice != nil) {
|
||||
productStruct.introductoryPrice =
|
||||
|
|
|
@ -392,14 +392,10 @@ NativeWindowMac::NativeWindowMac(const gin_helper::Dictionary& options,
|
|||
// Create a tab only if tabbing identifier is specified and window has
|
||||
// a native title bar.
|
||||
if (tabbingIdentifier.empty() || transparent() || !has_frame()) {
|
||||
if (@available(macOS 10.12, *)) {
|
||||
[window_ setTabbingMode:NSWindowTabbingModeDisallowed];
|
||||
}
|
||||
} else {
|
||||
if (@available(macOS 10.12, *)) {
|
||||
[window_ setTabbingIdentifier:base::SysUTF8ToNSString(tabbingIdentifier)];
|
||||
}
|
||||
}
|
||||
|
||||
// Resize to content bounds.
|
||||
bool use_content_size = false;
|
||||
|
@ -1564,66 +1560,49 @@ void NativeWindowMac::UpdateFrame() {
|
|||
|
||||
void NativeWindowMac::SetTouchBar(
|
||||
std::vector<gin_helper::PersistentDictionary> items) {
|
||||
if (@available(macOS 10.12.2, *)) {
|
||||
touch_bar_.reset([[ElectronTouchBar alloc]
|
||||
initWithDelegate:window_delegate_.get()
|
||||
window:this
|
||||
settings:std::move(items)]);
|
||||
[window_ setTouchBar:nil];
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::RefreshTouchBarItem(const std::string& item_id) {
|
||||
if (@available(macOS 10.12.2, *)) {
|
||||
if (touch_bar_ && [window_ touchBar])
|
||||
[touch_bar_ refreshTouchBarItem:[window_ touchBar] id:item_id];
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::SetEscapeTouchBarItem(
|
||||
gin_helper::PersistentDictionary item) {
|
||||
if (@available(macOS 10.12.2, *)) {
|
||||
if (touch_bar_ && [window_ touchBar])
|
||||
[touch_bar_ setEscapeTouchBarItem:std::move(item)
|
||||
forTouchBar:[window_ touchBar]];
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::SelectPreviousTab() {
|
||||
if (@available(macOS 10.12, *)) {
|
||||
[window_ selectPreviousTab:nil];
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::SelectNextTab() {
|
||||
if (@available(macOS 10.12, *)) {
|
||||
[window_ selectNextTab:nil];
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::MergeAllWindows() {
|
||||
if (@available(macOS 10.12, *)) {
|
||||
[window_ mergeAllWindows:nil];
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::MoveTabToNewWindow() {
|
||||
if (@available(macOS 10.12, *)) {
|
||||
[window_ moveTabToNewWindow:nil];
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::ToggleTabBar() {
|
||||
if (@available(macOS 10.12, *)) {
|
||||
[window_ toggleTabBar:nil];
|
||||
}
|
||||
}
|
||||
|
||||
bool NativeWindowMac::AddTabbedWindow(NativeWindow* window) {
|
||||
if (window_ == window->GetNativeWindow().GetNativeNSWindow()) {
|
||||
return false;
|
||||
} else {
|
||||
if (@available(macOS 10.12, *))
|
||||
[window_ addTabbedWindow:window->GetNativeWindow().GetNativeNSWindow()
|
||||
ordered:NSWindowAbove];
|
||||
}
|
||||
|
|
|
@ -422,10 +422,8 @@ static base::scoped_nsobject<NSMenu> recentDocumentsMenuSwap_;
|
|||
[item setKeyEquivalentModifierMask:modifier_mask];
|
||||
}
|
||||
|
||||
if (@available(macOS 10.13, *)) {
|
||||
[(id)item
|
||||
setAllowsKeyEquivalentWhenHidden:(model->WorksWhenHiddenAt(index))];
|
||||
}
|
||||
|
||||
// Set menu item's role.
|
||||
[item setTarget:self];
|
||||
|
|
|
@ -56,7 +56,7 @@ bool ScopedDisableResize::disable_resize_ = false;
|
|||
return [super contentRectForFrameRect:frameRect];
|
||||
}
|
||||
|
||||
- (NSTouchBar*)makeTouchBar API_AVAILABLE(macosx(10.12.2)) {
|
||||
- (NSTouchBar*)makeTouchBar {
|
||||
if (shell_->touch_bar())
|
||||
return [shell_->touch_bar() makeTouchBar];
|
||||
else
|
||||
|
|
|
@ -329,8 +329,7 @@ using FullScreenTransitionState =
|
|||
#pragma mark - NSTouchBarDelegate
|
||||
|
||||
- (NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar
|
||||
makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier {
|
||||
if (touchBar && shell_->touch_bar())
|
||||
return [shell_->touch_bar() makeItemForIdentifier:identifier];
|
||||
else
|
||||
|
|
|
@ -29,19 +29,16 @@
|
|||
window:(electron::NativeWindow*)window
|
||||
settings:(std::vector<gin_helper::PersistentDictionary>)settings;
|
||||
|
||||
- (NSTouchBar*)makeTouchBar API_AVAILABLE(macosx(10.12.2));
|
||||
- (NSTouchBar*)touchBarFromItemIdentifiers:(NSMutableArray*)items
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
- (NSTouchBar*)makeTouchBar;
|
||||
- (NSTouchBar*)touchBarFromItemIdentifiers:(NSMutableArray*)items;
|
||||
- (NSMutableArray*)identifiersFromSettings:
|
||||
(const std::vector<gin_helper::PersistentDictionary>&)settings;
|
||||
- (void)refreshTouchBarItem:(NSTouchBar*)touchBar
|
||||
id:(const std::string&)item_id
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
id:(const std::string&)item_id;
|
||||
- (void)addNonDefaultTouchBarItems:
|
||||
(const std::vector<gin_helper::PersistentDictionary>&)items;
|
||||
- (void)setEscapeTouchBarItem:(gin_helper::PersistentDictionary)item
|
||||
forTouchBar:(NSTouchBar*)touchBar
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
forTouchBar:(NSTouchBar*)touchBar;
|
||||
|
||||
- (NSString*)idFromIdentifier:(NSString*)identifier
|
||||
withPrefix:(NSString*)prefix;
|
||||
|
@ -52,47 +49,35 @@
|
|||
|
||||
// Selector actions
|
||||
- (void)buttonAction:(id)sender;
|
||||
- (void)colorPickerAction:(id)sender API_AVAILABLE(macosx(10.12.2));
|
||||
- (void)sliderAction:(id)sender API_AVAILABLE(macosx(10.12.2));
|
||||
- (void)colorPickerAction:(id)sender;
|
||||
- (void)sliderAction:(id)sender;
|
||||
|
||||
// Helpers to create touch bar items
|
||||
- (NSTouchBarItem*)makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
- (NSTouchBarItem*)makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier;
|
||||
- (NSTouchBarItem*)makeButtonForID:(NSString*)id
|
||||
withIdentifier:(NSString*)identifier
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withIdentifier:(NSString*)identifier;
|
||||
- (NSTouchBarItem*)makeLabelForID:(NSString*)id
|
||||
withIdentifier:(NSString*)identifier
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withIdentifier:(NSString*)identifier;
|
||||
- (NSTouchBarItem*)makeColorPickerForID:(NSString*)id
|
||||
withIdentifier:(NSString*)identifier
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withIdentifier:(NSString*)identifier;
|
||||
- (NSTouchBarItem*)makeSliderForID:(NSString*)id
|
||||
withIdentifier:(NSString*)identifier
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withIdentifier:(NSString*)identifier;
|
||||
- (NSTouchBarItem*)makePopoverForID:(NSString*)id
|
||||
withIdentifier:(NSString*)identifier
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withIdentifier:(NSString*)identifier;
|
||||
- (NSTouchBarItem*)makeGroupForID:(NSString*)id
|
||||
withIdentifier:(NSString*)identifier
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withIdentifier:(NSString*)identifier;
|
||||
|
||||
// Helpers to update touch bar items
|
||||
- (void)updateButton:(NSCustomTouchBarItem*)item
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings;
|
||||
- (void)updateLabel:(NSCustomTouchBarItem*)item
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings;
|
||||
- (void)updateColorPicker:(NSColorPickerTouchBarItem*)item
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings;
|
||||
- (void)updateSlider:(NSSliderTouchBarItem*)item
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings;
|
||||
- (void)updatePopover:(NSPopoverTouchBarItem*)item
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2));
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings;
|
||||
|
||||
@end
|
||||
|
||||
|
|
|
@ -67,7 +67,6 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
|
||||
bool has_other_items_proxy = false;
|
||||
|
||||
if (@available(macOS 10.12.2, *)) {
|
||||
for (const auto& item : dicts) {
|
||||
std::string type;
|
||||
std::string item_id;
|
||||
|
@ -98,7 +97,6 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
if (!has_other_items_proxy)
|
||||
[identifiers addObject:NSTouchBarItemIdentifierOtherItemsProxy];
|
||||
}
|
||||
|
||||
return identifiers;
|
||||
}
|
||||
|
@ -140,8 +138,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
- (void)refreshTouchBarItem:(NSTouchBar*)touchBar
|
||||
id:(NSTouchBarItemIdentifier)identifier
|
||||
withType:(const std::string&)item_type
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings {
|
||||
NSTouchBarItem* item = [touchBar itemForIdentifier:identifier];
|
||||
if (!item)
|
||||
return;
|
||||
|
@ -289,8 +286,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
|
||||
- (void)scrubber:(NSScrubber*)scrubber
|
||||
didSelectItemAtIndex:(NSInteger)selectedIndex
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
didSelectItemAtIndex:(NSInteger)selectedIndex {
|
||||
base::DictionaryValue details;
|
||||
details.SetInteger("selectedIndex", selectedIndex);
|
||||
details.SetString("type", "select");
|
||||
|
@ -299,8 +295,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
|
||||
- (void)scrubber:(NSScrubber*)scrubber
|
||||
didHighlightItemAtIndex:(NSInteger)highlightedIndex
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
didHighlightItemAtIndex:(NSInteger)highlightedIndex {
|
||||
base::DictionaryValue details;
|
||||
details.SetInteger("highlightedIndex", highlightedIndex);
|
||||
details.SetString("type", "highlight");
|
||||
|
@ -592,8 +587,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
|
||||
- (void)updateGroup:(NSGroupTouchBarItem*)item
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings {
|
||||
v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
|
||||
v8::HandleScope handle_scope(isolate);
|
||||
|
||||
|
@ -609,8 +603,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
|
||||
- (NSTouchBarItem*)makeSegmentedControlForID:(NSString*)id
|
||||
withIdentifier:(NSString*)identifier
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
withIdentifier:(NSString*)identifier {
|
||||
std::string s_id([id UTF8String]);
|
||||
if (![self hasItemWithID:s_id])
|
||||
return nil;
|
||||
|
@ -635,8 +628,8 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
|
||||
- (void)updateSegmentedControl:(NSCustomTouchBarItem*)item
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
withSettings:
|
||||
(const gin_helper::PersistentDictionary&)settings {
|
||||
NSSegmentedControl* control = item.view;
|
||||
|
||||
std::string segmentStyle;
|
||||
|
@ -697,8 +690,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
|
||||
- (NSTouchBarItem*)makeScrubberForID:(NSString*)id
|
||||
withIdentifier:(NSString*)identifier
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
withIdentifier:(NSString*)identifier {
|
||||
std::string s_id([id UTF8String]);
|
||||
if (![self hasItemWithID:s_id])
|
||||
return nil;
|
||||
|
@ -729,8 +721,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
|
||||
- (void)updateScrubber:(NSCustomTouchBarItem*)item
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
withSettings:(const gin_helper::PersistentDictionary&)settings {
|
||||
NSScrubber* scrubber = item.view;
|
||||
|
||||
bool showsArrowButtons = false;
|
||||
|
@ -780,8 +771,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
[scrubber reloadData];
|
||||
}
|
||||
|
||||
- (NSInteger)numberOfItemsForScrubber:(NSScrubber*)scrubber
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
- (NSInteger)numberOfItemsForScrubber:(NSScrubber*)scrubber {
|
||||
std::string s_id([[scrubber identifier] UTF8String]);
|
||||
if (![self hasItemWithID:s_id])
|
||||
return 0;
|
||||
|
@ -796,8 +786,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
}
|
||||
|
||||
- (NSScrubberItemView*)scrubber:(NSScrubber*)scrubber
|
||||
viewForItemAtIndex:(NSInteger)index
|
||||
API_AVAILABLE(macosx(10.12.2)) {
|
||||
viewForItemAtIndex:(NSInteger)index {
|
||||
std::string s_id([[scrubber identifier] UTF8String]);
|
||||
if (![self hasItemWithID:s_id])
|
||||
return nil;
|
||||
|
@ -839,7 +828,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
|
|||
|
||||
- (NSSize)scrubber:(NSScrubber*)scrubber
|
||||
layout:(NSScrubberFlowLayout*)layout
|
||||
sizeForItemAtIndex:(NSInteger)itemIndex API_AVAILABLE(macosx(10.12.2)) {
|
||||
sizeForItemAtIndex:(NSInteger)itemIndex {
|
||||
NSInteger width = 50;
|
||||
NSInteger height = 30;
|
||||
NSInteger margin = 15;
|
||||
|
|
Loading…
Reference in a new issue