diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm index 6a161f0f36c6..349bc78976ad 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -48,6 +48,7 @@ #include "ui/gfx/geometry/dip_util.h" #include "ui/gfx/mac/coordinate_conversion.h" #include "ui/gl/gl_switches.h" +#include "ui/gl/gpu_switching_manager.h" using blink::WebInputEvent; using blink::WebMouseEvent; @@ -1112,6 +1113,12 @@ void RenderWidgetHostViewMac::SetBackgroundColor(SkColor color) { DCHECK(SkColorGetA(color) == SK_AlphaOPAQUE || SkColorGetA(color) == SK_AlphaTRANSPARENT); bool opaque = SkColorGetA(color) == SK_AlphaOPAQUE; + if (opaque) { + bool wantsTransparent = ui::GpuSwitchingManager::UseTransparent() || + ([cocoa_view() window] && ![[cocoa_view() window] isOpaque]); + if (wantsTransparent) + opaque = NO; + } if (background_is_opaque_ != opaque) { background_is_opaque_ = opaque; if (host()) diff --git a/content/browser/renderer_host/render_widget_host_view_cocoa.mm b/content/browser/renderer_host/render_widget_host_view_cocoa.mm index c7ad6fa8c75f..bdfabc1061bb 100644 --- a/content/browser/renderer_host/render_widget_host_view_cocoa.mm +++ b/content/browser/renderer_host/render_widget_host_view_cocoa.mm @@ -178,6 +178,11 @@ void ExtractUnderlines(NSAttributedString* string, } // namespace +@interface NSWindow (AtomCustomMethods) +- (BOOL)acceptsFirstMouse; +- (BOOL)disableAutoHideCursor; +@end + // These are not documented, so use only after checking -respondsToSelector:. @interface NSApplication (UndocumentedSpeechMethods) - (void)speakString:(NSString*)string; @@ -355,6 +360,9 @@ void ExtractUnderlines(NSAttributedString* string, } - (BOOL)acceptsFirstMouse:(NSEvent*)theEvent { + if ([self.window respondsToSelector:@selector(acceptsFirstMouse)] && + [self.window acceptsFirstMouse]) + return YES; return [self acceptsMouseEventsWhenInactive]; } @@ -555,6 +563,7 @@ void ExtractUnderlines(NSAttributedString* string, if (EventIsReservedBySystem(theEvent)) return NO; +#if 0 // If we return |NO| from this function, cocoa will send the key event to // the menu and only if the menu does not process the event to |keyDown:|. We // want to send the event to a renderer _before_ sending it to the menu, so @@ -568,6 +577,7 @@ void ExtractUnderlines(NSAttributedString* string, DCHECK(![[NSApp mainMenu] performKeyEquivalent:theEvent]); return NO; } +#endif // Command key combinations are sent via performKeyEquivalent rather than // keyDown:. We just forward this on and if WebCore doesn't want to handle @@ -664,6 +674,10 @@ void ExtractUnderlines(NSAttributedString* string, eventType == NSKeyDown && !(modifierFlags & NSCommandKeyMask); + if ([theEvent.window respondsToSelector:@selector(disableAutoHideCursor)] && + [theEvent.window disableAutoHideCursor]) + shouldAutohideCursor = NO; + // We only handle key down events and just simply forward other events. if (eventType != NSKeyDown) { client_->OnNSViewForwardKeyboardEvent(event, latency_info); @@ -1425,9 +1439,11 @@ void ExtractUnderlines(NSAttributedString* string, // Since this implementation doesn't have to wait any IPC calls, this doesn't // make any key-typing jank. --hbono 7/23/09 // +#ifndef MAS_BUILD extern "C" { extern NSString* NSTextInputReplacementRangeAttributeName; } +#endif - (NSArray*)validAttributesForMarkedText { // This code is just copied from WebKit except renaming variables. @@ -1436,7 +1452,10 @@ extern NSString* NSTextInputReplacementRangeAttributeName; initWithObjects:NSUnderlineStyleAttributeName, NSUnderlineColorAttributeName, NSMarkedClauseSegmentAttributeName, - NSTextInputReplacementRangeAttributeName, nil]); +#ifndef MAS_BUILD + NSTextInputReplacementRangeAttributeName, +#endif + nil]); } return validAttributesForMarkedText_.get(); }