Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(296)

Side by Side Diff: ui/views/cocoa/bridged_content_view.mm

Issue 1747803003: MacViews: Implement Tab Dragging (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed click simulation, reimplemented CocoaWindowMoveLoop without relying on the WindowServer. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #import "ui/views/cocoa/bridged_content_view.h" 5 #import "ui/views/cocoa/bridged_content_view.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #import "base/mac/mac_util.h" 8 #import "base/mac/mac_util.h"
9 #import "base/mac/scoped_nsobject.h" 9 #import "base/mac/scoped_nsobject.h"
10 #include "base/strings/sys_string_conversions.h" 10 #include "base/strings/sys_string_conversions.h"
(...skipping 17 matching lines...) Expand all
28 #include "ui/views/view.h" 28 #include "ui/views/view.h"
29 #include "ui/views/widget/widget.h" 29 #include "ui/views/widget/widget.h"
30 30
31 using views::MenuController; 31 using views::MenuController;
32 32
33 namespace { 33 namespace {
34 34
35 NSString* const kFullKeyboardAccessChangedNotification = 35 NSString* const kFullKeyboardAccessChangedNotification =
36 @"com.apple.KeyboardUIModeDidChange"; 36 @"com.apple.KeyboardUIModeDidChange";
37 37
38 // We're sending simulated mouse events in CocoaWindowMoveLoop, and don't want
39 // BridgedContentView to react when we're starting/ending the RunMoveLoop.
40 // When reattaching the dragged tab we're sending the mouse down event to the
41 // parent window we don't have the pointer to, so this flag is global for the
42 // RunMoveLoop.
43 bool g_ignore_mouse_events = false;
44
38 // Returns true if all four corners of |rect| are contained inside |path|. 45 // Returns true if all four corners of |rect| are contained inside |path|.
39 bool IsRectInsidePath(NSRect rect, NSBezierPath* path) { 46 bool IsRectInsidePath(NSRect rect, NSBezierPath* path) {
40 return [path containsPoint:rect.origin] && 47 return [path containsPoint:rect.origin] &&
41 [path containsPoint:NSMakePoint(rect.origin.x + rect.size.width, 48 [path containsPoint:NSMakePoint(rect.origin.x + rect.size.width,
42 rect.origin.y)] && 49 rect.origin.y)] &&
43 [path containsPoint:NSMakePoint(rect.origin.x, 50 [path containsPoint:NSMakePoint(rect.origin.x,
44 rect.origin.y + rect.size.height)] && 51 rect.origin.y + rect.size.height)] &&
45 [path containsPoint:NSMakePoint(rect.origin.x + rect.size.width, 52 [path containsPoint:NSMakePoint(rect.origin.x + rect.size.width,
46 rect.origin.y + rect.size.height)]; 53 rect.origin.y + rect.size.height)];
47 } 54 }
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 name:kFullKeyboardAccessChangedNotification 276 name:kFullKeyboardAccessChangedNotification
270 object:nil]; 277 object:nil];
271 278
272 // Initialize the focus manager with the correct keyboard accessibility 279 // Initialize the focus manager with the correct keyboard accessibility
273 // setting. 280 // setting.
274 [self updateFullKeyboardAccess]; 281 [self updateFullKeyboardAccess];
275 } 282 }
276 return self; 283 return self;
277 } 284 }
278 285
286 + (void)setIgnoreMouseEvents:(BOOL)flag {
287 g_ignore_mouse_events = flag;
288 }
289
279 - (void)clearView { 290 - (void)clearView {
280 textInputClient_ = nullptr; 291 textInputClient_ = nullptr;
281 hostedView_ = nullptr; 292 hostedView_ = nullptr;
282 [[NSDistributedNotificationCenter defaultCenter] removeObserver:self]; 293 [[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
283 [cursorTrackingArea_.get() clearOwner]; 294 [cursorTrackingArea_.get() clearOwner];
284 [self removeTrackingArea:cursorTrackingArea_.get()]; 295 [self removeTrackingArea:cursorTrackingArea_.get()];
285 } 296 }
286 297
287 - (void)processCapturedMouseEvent:(NSEvent*)theEvent { 298 - (void)processCapturedMouseEvent:(NSEvent*)theEvent {
288 if (!hostedView_) 299 if (!hostedView_)
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 // BaseView implementation. 463 // BaseView implementation.
453 464
454 // Don't use tracking areas from BaseView. BridgedContentView's tracks 465 // Don't use tracking areas from BaseView. BridgedContentView's tracks
455 // NSTrackingCursorUpdate and Apple's documentation suggests it's incompatible. 466 // NSTrackingCursorUpdate and Apple's documentation suggests it's incompatible.
456 - (void)enableTracking { 467 - (void)enableTracking {
457 } 468 }
458 469
459 // Translates the location of |theEvent| to toolkit-views coordinates and passes 470 // Translates the location of |theEvent| to toolkit-views coordinates and passes
460 // the event to NativeWidgetMac for handling. 471 // the event to NativeWidgetMac for handling.
461 - (void)mouseEvent:(NSEvent*)theEvent { 472 - (void)mouseEvent:(NSEvent*)theEvent {
462 if (!hostedView_) 473 if (!hostedView_ || g_ignore_mouse_events)
463 return; 474 return;
464 475
465 ui::MouseEvent event(theEvent); 476 ui::MouseEvent event(theEvent);
466 477
467 // Aura updates tooltips with the help of aura::Window::AddPreTargetHandler(). 478 // Aura updates tooltips with the help of aura::Window::AddPreTargetHandler().
468 // Mac hooks in here. 479 // Mac hooks in here.
469 [self updateTooltipIfRequiredAt:event.location()]; 480 [self updateTooltipIfRequiredAt:event.location()];
470 481
471 hostedView_->GetWidget()->OnMouseEvent(&event); 482 hostedView_->GetWidget()->OnMouseEvent(&event);
472 } 483 }
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 } 1034 }
1024 1035
1025 return [super accessibilityAttributeValue:attribute]; 1036 return [super accessibilityAttributeValue:attribute];
1026 } 1037 }
1027 1038
1028 - (id)accessibilityHitTest:(NSPoint)point { 1039 - (id)accessibilityHitTest:(NSPoint)point {
1029 return [hostedView_->GetNativeViewAccessible() accessibilityHitTest:point]; 1040 return [hostedView_->GetNativeViewAccessible() accessibilityHitTest:point];
1030 } 1041 }
1031 1042
1032 @end 1043 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698