OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <QuartzCore/QuartzCore.h> | 5 #include <QuartzCore/QuartzCore.h> |
6 | 6 |
7 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h" | 7 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h" |
8 | 8 |
9 #include "app/surface/io_surface_support_mac.h" | 9 #include "app/surface/io_surface_support_mac.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 1402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1413 self = [super initWithFrame:NSZeroRect]; | 1413 self = [super initWithFrame:NSZeroRect]; |
1414 if (self) { | 1414 if (self) { |
1415 editCommand_helper_.reset(new RWHVMEditCommandHelper); | 1415 editCommand_helper_.reset(new RWHVMEditCommandHelper); |
1416 editCommand_helper_->AddEditingSelectorsToClass([self class]); | 1416 editCommand_helper_->AddEditingSelectorsToClass([self class]); |
1417 | 1417 |
1418 renderWidgetHostView_.reset(r); | 1418 renderWidgetHostView_.reset(r); |
1419 canBeKeyView_ = YES; | 1419 canBeKeyView_ = YES; |
1420 takesFocusOnlyOnMouseDown_ = NO; | 1420 takesFocusOnlyOnMouseDown_ = NO; |
1421 closeOnDeactivate_ = NO; | 1421 closeOnDeactivate_ = NO; |
1422 focusedPluginIdentifier_ = -1; | 1422 focusedPluginIdentifier_ = -1; |
1423 mouseEventWasIgnored_ = NO; | |
Mark Mentovai
2011/03/24 18:44:40
Is NO really the right thing to initialize this to
Alexei Svitkine (slow)
2011/03/24 19:04:56
Done.
| |
1423 } | 1424 } |
1424 return self; | 1425 return self; |
1425 } | 1426 } |
1426 | 1427 |
1427 - (void)setCanBeKeyView:(BOOL)can { | 1428 - (void)setCanBeKeyView:(BOOL)can { |
1428 canBeKeyView_ = can; | 1429 canBeKeyView_ = can; |
1429 } | 1430 } |
1430 | 1431 |
1431 - (void)setTakesFocusOnlyOnMouseDown:(BOOL)b { | 1432 - (void)setTakesFocusOnlyOnMouseDown:(BOOL)b { |
1432 takesFocusOnlyOnMouseDown_ = b; | 1433 takesFocusOnlyOnMouseDown_ = b; |
1433 } | 1434 } |
1434 | 1435 |
1435 - (void)setCloseOnDeactivate:(BOOL)b { | 1436 - (void)setCloseOnDeactivate:(BOOL)b { |
1436 closeOnDeactivate_ = b; | 1437 closeOnDeactivate_ = b; |
1437 } | 1438 } |
1438 | 1439 |
1439 - (void)mouseEvent:(NSEvent*)theEvent { | 1440 - (void)mouseEvent:(NSEvent*)theEvent { |
1441 // Use hitTest to check whether we're the frontmost view for this mouse | |
Mark Mentovai
2011/03/24 18:44:40
s/we're/this is/
Alexei Svitkine (slow)
2011/03/24 19:04:56
Done.
| |
1442 // location. If this is not the frontmost view, don't handle the event | |
1443 // here - let the frontmost view handle it. | |
1444 NSView* contentView = [[self window] contentView]; | |
1445 if ([contentView hitTest:[theEvent locationInWindow]] != self) { | |
1446 // If this is the first such event, send a mouse exit to the host view. | |
1447 if (!mouseEventWasIgnored_ && renderWidgetHostView_->render_widget_host_) { | |
1448 WebMouseEvent exitEvent = | |
1449 WebInputEventFactory::mouseEvent(theEvent, self); | |
1450 exitEvent.type = WebInputEvent::MouseLeave; | |
1451 exitEvent.button = WebMouseEvent::ButtonNone; | |
1452 renderWidgetHostView_->render_widget_host_->ForwardMouseEvent(exitEvent); | |
1453 } | |
1454 mouseEventWasIgnored_ = YES; | |
1455 return; | |
1456 } | |
1457 | |
1458 // If the previous event was ignored as a result of the hitTest, send a mouse | |
1459 // event to the host view. | |
1460 if (mouseEventWasIgnored_) { | |
1461 if (renderWidgetHostView_->render_widget_host_) { | |
1462 WebMouseEvent enterEvent = | |
1463 WebInputEventFactory::mouseEvent(theEvent, self); | |
1464 enterEvent.type = WebInputEvent::MouseMove; | |
1465 enterEvent.button = WebMouseEvent::ButtonNone; | |
1466 renderWidgetHostView_->render_widget_host_->ForwardMouseEvent(enterEvent); | |
1467 } | |
1468 mouseEventWasIgnored_ = NO; | |
1469 } | |
1470 | |
1440 // TODO(rohitrao): Probably need to handle other mouse down events here. | 1471 // TODO(rohitrao): Probably need to handle other mouse down events here. |
1441 if ([theEvent type] == NSLeftMouseDown && takesFocusOnlyOnMouseDown_) { | 1472 if ([theEvent type] == NSLeftMouseDown && takesFocusOnlyOnMouseDown_) { |
1442 if (renderWidgetHostView_->render_widget_host_) | 1473 if (renderWidgetHostView_->render_widget_host_) |
1443 renderWidgetHostView_->render_widget_host_->OnMouseActivate(); | 1474 renderWidgetHostView_->render_widget_host_->OnMouseActivate(); |
1444 | 1475 |
1445 // Manually take focus after the click but before forwarding it to the | 1476 // Manually take focus after the click but before forwarding it to the |
1446 // renderer. | 1477 // renderer. |
1447 [[self window] makeFirstResponder:self]; | 1478 [[self window] makeFirstResponder:self]; |
1448 } | 1479 } |
1449 | 1480 |
(...skipping 1413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2863 if (!string) return NO; | 2894 if (!string) return NO; |
2864 | 2895 |
2865 // If the user is currently using an IME, confirm the IME input, | 2896 // If the user is currently using an IME, confirm the IME input, |
2866 // and then insert the text from the service, the same as TextEdit and Safari. | 2897 // and then insert the text from the service, the same as TextEdit and Safari. |
2867 [self confirmComposition]; | 2898 [self confirmComposition]; |
2868 [self insertText:string]; | 2899 [self insertText:string]; |
2869 return YES; | 2900 return YES; |
2870 } | 2901 } |
2871 | 2902 |
2872 @end | 2903 @end |
OLD | NEW |