summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-14 22:36:22 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-14 22:36:22 +0000
commita2a15a7a47fdecaa23b62d16773e7584985f1325 (patch)
treec47fc33b32eeb695acc7a329ec1731b6367f4830
parentdd021e480c0c36be5737321dbda21f39166e96a1 (diff)
downloadchromium_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.h3
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_mac.mm21
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 {