| Index: ui/views/cocoa/bridged_content_view.mm
|
| diff --git a/ui/views/cocoa/bridged_content_view.mm b/ui/views/cocoa/bridged_content_view.mm
|
| index 6022a44723bf99d9873d04bd6dcbebdb7bc66697..788564ccbb054081ffd324b74f9f202c4b88857e 100644
|
| --- a/ui/views/cocoa/bridged_content_view.mm
|
| +++ b/ui/views/cocoa/bridged_content_view.mm
|
| @@ -31,6 +31,8 @@ using views::MenuController;
|
|
|
| namespace {
|
|
|
| +bool g_ignore_mouse_events = false;
|
| +
|
| // Returns true if all four corners of |rect| are contained inside |path|.
|
| bool IsRectInsidePath(NSRect rect, NSBezierPath* path) {
|
| return [path containsPoint:rect.origin] &&
|
| @@ -198,6 +200,7 @@ gfx::Rect GetFirstRectForRangeHelper(const ui::TextInputClient* client,
|
| @synthesize hostedView = hostedView_;
|
| @synthesize textInputClient = textInputClient_;
|
| @synthesize drawMenuBackgroundForBlur = drawMenuBackgroundForBlur_;
|
| +@synthesize ignoreMouseEvents = ignoreMouseEvents_;
|
| @synthesize mouseDownCanMoveWindow = mouseDownCanMoveWindow_;
|
|
|
| - (id)initWithView:(views::View*)viewToHost {
|
| @@ -223,6 +226,11 @@ gfx::Rect GetFirstRectForRangeHelper(const ui::TextInputClient* client,
|
| return self;
|
| }
|
|
|
| +- (void)setIgnoreMouseEvents:(BOOL)flag {
|
| + ignoreMouseEvents_ = flag;
|
| + g_ignore_mouse_events = flag;
|
| +}
|
| +
|
| - (void)clearView {
|
| textInputClient_ = nullptr;
|
| hostedView_ = nullptr;
|
| @@ -231,6 +239,11 @@ gfx::Rect GetFirstRectForRangeHelper(const ui::TextInputClient* client,
|
| }
|
|
|
| - (void)processCapturedMouseEvent:(NSEvent*)theEvent {
|
| + if (CGEventGetIntegerValueField([theEvent CGEvent], kCGEventSourceUserData)) {
|
| + DLOG(INFO) << "Ignoring generated event in capture.";
|
| + return;
|
| + }
|
| +
|
| if (!hostedView_)
|
| return;
|
|
|
| @@ -247,6 +260,8 @@ gfx::Rect GetFirstRectForRangeHelper(const ui::TextInputClient* client,
|
| ui::MouseEvent event(theEvent);
|
| event.set_location(
|
| MovePointToWindow([theEvent locationInWindow], source, target));
|
| + DLOG(INFO) << "processing captured event in window at: "
|
| + << event.location().ToString();
|
| hostedView_->GetWidget()->OnMouseEvent(&event);
|
| }
|
|
|
| @@ -389,11 +404,19 @@ gfx::Rect GetFirstRectForRangeHelper(const ui::TextInputClient* client,
|
| // Translates the location of |theEvent| to toolkit-views coordinates and passes
|
| // the event to NativeWidgetMac for handling.
|
| - (void)mouseEvent:(NSEvent*)theEvent {
|
| - if (!hostedView_)
|
| + if (CGEventGetIntegerValueField([theEvent CGEvent], kCGEventSourceUserData)) {
|
| + DLOG(INFO) << "Ignoring generated event [regular].";
|
| + return;
|
| + }
|
| +
|
| + if (!hostedView_ || g_ignore_mouse_events)
|
| return;
|
|
|
| ui::MouseEvent event(theEvent);
|
|
|
| + // DLOG(INFO) << "processing regular mouse event event in window at: " <<
|
| + // event.location().ToString();
|
| +
|
| // Aura updates tooltips with the help of aura::Window::AddPreTargetHandler().
|
| // Mac hooks in here.
|
| [self updateTooltipIfRequiredAt:event.location()];
|
|
|