| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" |
| 6 | 6 |
| 7 #import <objc/runtime.h> | 7 #import <objc/runtime.h> |
| 8 #include <QuartzCore/QuartzCore.h> | 8 #include <QuartzCore/QuartzCore.h> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 2080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2091 NSView* view = [contentView hitTest:[theEvent locationInWindow]]; | 2091 NSView* view = [contentView hitTest:[theEvent locationInWindow]]; |
| 2092 // Traverse the superview hierarchy as the hitTest will return the frontmost | 2092 // Traverse the superview hierarchy as the hitTest will return the frontmost |
| 2093 // view, such as an NSTextView, while nonWebContentView may be specified by | 2093 // view, such as an NSTextView, while nonWebContentView may be specified by |
| 2094 // its parent view. | 2094 // its parent view. |
| 2095 while (view) { | 2095 while (view) { |
| 2096 if ([view respondsToSelector:nonWebContentViewSelector] && | 2096 if ([view respondsToSelector:nonWebContentViewSelector] && |
| 2097 [view performSelector:nonWebContentViewSelector]) { | 2097 [view performSelector:nonWebContentViewSelector]) { |
| 2098 // The cursor is over a nonWebContentView - ignore this mouse event. | 2098 // The cursor is over a nonWebContentView - ignore this mouse event. |
| 2099 return YES; | 2099 return YES; |
| 2100 } | 2100 } |
| 2101 if ([view isKindOfClass:[self class]] && ![view isEqual:self]) { | 2101 if ([view isKindOfClass:[self class]] && ![view isEqual:self] && |
| 2102 !hasOpenMouseDown_) { |
| 2102 // The cursor is over an overlapping render widget. This check is done by | 2103 // The cursor is over an overlapping render widget. This check is done by |
| 2103 // both views so the one that's returned by -hitTest: will end up | 2104 // both views so the one that's returned by -hitTest: will end up |
| 2104 // processing the event. | 2105 // processing the event. |
| 2106 // Note that while dragging, we only get events for the render view where |
| 2107 // drag started, even if mouse is actually over another view or outside |
| 2108 // the window. Cocoa does this for us. We should handle these events and |
| 2109 // not ignore (since there is no other render view to handle them). Thus |
| 2110 // the |!hasOpenMouseDown_| check above. |
| 2105 return YES; | 2111 return YES; |
| 2106 } | 2112 } |
| 2107 view = [view superview]; | 2113 view = [view superview]; |
| 2108 } | 2114 } |
| 2109 return NO; | 2115 return NO; |
| 2110 } | 2116 } |
| 2111 | 2117 |
| 2112 - (void)mouseEvent:(NSEvent*)theEvent { | 2118 - (void)mouseEvent:(NSEvent*)theEvent { |
| 2113 TRACE_EVENT0("browser", "RenderWidgetHostViewCocoa::mouseEvent"); | 2119 TRACE_EVENT0("browser", "RenderWidgetHostViewCocoa::mouseEvent"); |
| 2114 if (delegate_ && [delegate_ respondsToSelector:@selector(handleEvent:)]) { | 2120 if (delegate_ && [delegate_ respondsToSelector:@selector(handleEvent:)]) { |
| (...skipping 1810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3925 return YES; | 3931 return YES; |
| 3926 } | 3932 } |
| 3927 | 3933 |
| 3928 - (BOOL)isOpaque { | 3934 - (BOOL)isOpaque { |
| 3929 if (renderWidgetHostView_->use_core_animation_) | 3935 if (renderWidgetHostView_->use_core_animation_) |
| 3930 return YES; | 3936 return YES; |
| 3931 return [super isOpaque]; | 3937 return [super isOpaque]; |
| 3932 } | 3938 } |
| 3933 | 3939 |
| 3934 @end | 3940 @end |
| OLD | NEW |