diff --git a/appshell/cefclient_mac.mm b/appshell/cefclient_mac.mm index 16b3e072e..1ed6fdf40 100644 --- a/appshell/cefclient_mac.mm +++ b/appshell/cefclient_mac.mm @@ -221,16 +221,35 @@ -(void)windowTitleDidChange:(NSString*)title { #endif } +-(BOOL)isRunningOnYosemite { + NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/SystemVersion.plist"]; + NSString* version = [dict objectForKey:@"ProductVersion"]; + return [version hasPrefix:@"10.10"]; +} + - (BOOL)isFullScreenSupported { - SInt32 version; - Gestalt(gestaltSystemVersion, &version); - return (version >= 0x1070); + // Return False on Yosemite so we + // don't draw our own full screen button + // and handle full screen mode + if (![self isRunningOnYosemite]) { + SInt32 version; + Gestalt(gestaltSystemVersion, &version); + return (version >= 0x1070); + } + return false; } -(BOOL)needsFullScreenActivateHack { - SInt32 version; - Gestalt(gestaltSystemVersion, &version); - return (version >= 0x1090); + if (![self isRunningOnYosemite]) { + SInt32 version; + Gestalt(gestaltSystemVersion, &version); + return (version >= 0x1090); + } + return false; +} + +-(BOOL)useSystemTrafficLights { + return [self isRunningOnYosemite]; } -(void)windowDidResize:(NSNotification *)notification @@ -299,7 +318,7 @@ -(void)initUI:(NSWindow*)mainWindow { NSButton *windowButton = nil; #ifdef CUSTOM_TRAFFIC_LIGHTS - if (!trafficLightsView) { + if (![self useSystemTrafficLights] && !trafficLightsView) { windowButton = [mainWindow standardWindowButton:NSWindowCloseButton]; [windowButton setHidden:YES]; windowButton = [mainWindow standardWindowButton:NSWindowMiniaturizeButton]; diff --git a/appshell/client_handler_mac.mm b/appshell/client_handler_mac.mm index 2e003ec58..e6b3a17ce 100644 --- a/appshell/client_handler_mac.mm +++ b/appshell/client_handler_mac.mm @@ -165,17 +165,35 @@ - (void)setIsReallyClosing { isReallyClosing = true; } -- (BOOL)isFullScreenSupported { - SInt32 version; - Gestalt(gestaltSystemVersion, &version); - return (version >= 0x1070); +-(BOOL)isRunningOnYosemite { + NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/SystemVersion.plist"]; + NSString* version = [dict objectForKey:@"ProductVersion"]; + return [version hasPrefix:@"10.10"]; } +- (BOOL)isFullScreenSupported { + // Return False on Yosemite so we + // don't draw our own full screen button + // and handle full screen mode + if (![self isRunningOnYosemite]) { + SInt32 version; + Gestalt(gestaltSystemVersion, &version); + return (version >= 0x1070); + } + return false; +} -(BOOL)needsFullScreenActivateHack { - SInt32 version; - Gestalt(gestaltSystemVersion, &version); - return (version >= 0x1090); + if (![self isRunningOnYosemite]) { + SInt32 version; + Gestalt(gestaltSystemVersion, &version); + return (version >= 0x1090); + } + return false; +} + +-(BOOL)useSystemTrafficLights { + return [self isRunningOnYosemite]; } -(void)setFullScreenButtonView:(NSView *)view { @@ -186,6 +204,8 @@ -(void)setTrafficLightsView:(NSView *)view { trafficLightsView = view; } + + -(void)windowTitleDidChange:(NSString*)title { #ifdef DARK_UI if (customTitlebar) { @@ -237,7 +257,7 @@ - (void)initUI { NSButton* windowButton = nil; #ifdef CUSTOM_TRAFFIC_LIGHTS - if (!trafficLightsView) { + if (![self useSystemTrafficLights] && !trafficLightsView) { windowButton = [theWin standardWindowButton:NSWindowCloseButton]; [windowButton setHidden:YES]; windowButton = [theWin standardWindowButton:NSWindowMiniaturizeButton]; diff --git a/appshell/client_handler_win.cpp b/appshell/client_handler_win.cpp index e758852fc..f09152b3e 100644 --- a/appshell/client_handler_win.cpp +++ b/appshell/client_handler_win.cpp @@ -123,6 +123,17 @@ bool ClientHandler::OnKeyEvent(CefRefPtr browser, void ClientHandler::ComputePopupPlacement(CefWindowInfo& windowInfo) { + // both must be set to work + if (windowInfo.width == CW_USEDEFAULT || + windowInfo.height == CW_USEDEFAULT) { + // force both vals to be CW_USEDEFAULT in this + // case because Windows doesn't correctly handle + // only one value being is supplied on input + windowInfo.width = CW_USEDEFAULT; + windowInfo.height = CW_USEDEFAULT; + return; + } + RECT rectMainWnd; gMainWnd->GetWindowRect(&rectMainWnd);