diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-14 22:36:22 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-14 22:36:22 +0000 |
commit | a2a15a7a47fdecaa23b62d16773e7584985f1325 (patch) | |
tree | c47fc33b32eeb695acc7a329ec1731b6367f4830 | |
parent | dd021e480c0c36be5737321dbda21f39166e96a1 (diff) | |
download | chromium_src-a2a15a7a47fdecaa23b62d16773e7584985f1325.zip chromium_src-a2a15a7a47fdecaa23b62d16773e7584985f1325.tar.gz chromium_src-a2a15a7a47fdecaa23b62d16773e7584985f1325.tar.bz2 |
Merge 44390 - Cancel any mouse events pending when tabs are switched.
BUG=http://crbug.com/39105
TEST=as in bug
Review URL: http://codereview.chromium.org/1513022
TBR=avi@chromium.org
Review URL: http://codereview.chromium.org/1593027
git-svn-id: svn://svn.chromium.org/chrome/branches/375/src@44566 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/renderer_host/render_widget_host_view_mac.h | 3 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_widget_host_view_mac.mm | 21 |
2 files changed, 23 insertions, 1 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.h b/chrome/browser/renderer_host/render_widget_host_view_mac.h index 7821423..61bc7e5 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_mac.h +++ b/chrome/browser/renderer_host/render_widget_host_view_mac.h @@ -48,6 +48,9 @@ class RWHVMEditCommandHelper; // Set to YES if insertText: or insertNewline: get called. BOOL textInserted_; + // Is YES if there was a mouse-down as yet unbalanced with a mouse-up. + BOOL hasOpenMouseDown_; + // Keep current key event when keyEvent: gets called. It's used in // insertText: and insertNewline: to synthesize the corresponding Char event. scoped_nsobject<NSEvent> currentKeyEvent_; diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.mm b/chrome/browser/renderer_host/render_widget_host_view_mac.mm index 5087398a..c27da76 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_mac.mm +++ b/chrome/browser/renderer_host/render_widget_host_view_mac.mm @@ -809,8 +809,15 @@ bool RenderWidgetHostViewMac::ContainsNativeView( if (renderWidgetHostView_->render_widget_host_) renderWidgetHostView_->render_widget_host_->ForwardMouseEvent(event); - if ([theEvent type] == NSLeftMouseDown) + if ([theEvent type] == NSLeftMouseDown) { renderWidgetHostView_->IMECleanupComposition(); + + hasOpenMouseDown_ = YES; + } + + if ([theEvent type] == NSLeftMouseUp) { + hasOpenMouseDown_ = NO; + } } - (BOOL)performKeyEquivalent:(NSEvent*)theEvent { @@ -1681,6 +1688,18 @@ extern NSString *NSTextInputReplacementRangeAttributeName; renderWidgetHostView_->WindowFrameChanged(); } } + + // If we switch windows (or are removed from the view hierarchy), cancel any + // open mouse-downs. + if (hasOpenMouseDown_) { + WebMouseEvent event; + event.type = WebInputEvent::MouseUp; + event.button = WebMouseEvent::ButtonLeft; + if (renderWidgetHostView_->render_widget_host_) + renderWidgetHostView_->render_widget_host_->ForwardMouseEvent(event); + + hasOpenMouseDown_ = NO; + } } - (void)undo:(id)sender { |