103 lines
		
	
	
	
		
			4.2 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
		
		
			
		
	
	
			103 lines
		
	
	
	
		
			4.2 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
|   | 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(); | ||
|  |  } |