OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "chrome/browser/renderer_host/render_widget_host_view_mac.h" | 5 #include "chrome/browser/renderer_host/render_widget_host_view_mac.h" |
6 | 6 |
7 #include "base/histogram.h" | 7 #include "base/histogram.h" |
8 #import "base/scoped_nsobject.h" | 8 #import "base/scoped_nsobject.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/sys_string_conversions.h" | 10 #include "base/sys_string_conversions.h" |
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 // | 658 // |
659 // If this object's retainCount is 1, the only reference is the one held by | 659 // If this object's retainCount is 1, the only reference is the one held by |
660 // keepSelfAlive. All other references may have been destroyed in the | 660 // keepSelfAlive. All other references may have been destroyed in the |
661 // RenderWidgetHost::ForwardKeyboardEvent call above if it resulted in tab | 661 // RenderWidgetHost::ForwardKeyboardEvent call above if it resulted in tab |
662 // closure. Were it not for that single reference, this object would | 662 // closure. Were it not for that single reference, this object would |
663 // already be deallocated. In that case, there's no point in calling | 663 // already be deallocated. In that case, there's no point in calling |
664 // -interpretKeyEvents:. | 664 // -interpretKeyEvents:. |
665 if ([self retainCount] > 1 && [theEvent type] == NSKeyDown) { | 665 if ([self retainCount] > 1 && [theEvent type] == NSKeyDown) { |
666 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]]; | 666 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]]; |
667 | 667 |
668 // We don't get insertText: calls if ctrl is down, so synthesize a keypress | 668 // We don't get insertText: calls if ctrl is down and not even a keyDown: |
669 // event for that case. Note that this makes our behavior deviate from the | 669 // call if cmd is down, so synthesize a keypress event for these cases. |
670 // windows and linux versions of chrome (however, see http://crbug.com/13891 | 670 // Note that this makes our behavior deviate from the windows and linux |
671 // ), but it makes us similar to how Safari behaves. | 671 // versions of chrome (however, see http://crbug.com/13891 ), but it makes |
| 672 // us behave similar to how Safari behaves. |
672 if ([theEvent modifierFlags] & (NSControlKeyMask | NSCommandKeyMask) && | 673 if ([theEvent modifierFlags] & (NSControlKeyMask | NSCommandKeyMask) && |
673 lastKeyPressedEvent_.get() != theEvent && | 674 lastKeyPressedEvent_.get() != theEvent && |
674 [[theEvent characters] length] > 0 && | 675 [[theEvent characters] length] > 0 && |
675 renderWidgetHostView_->render_widget_host_) { | 676 renderWidgetHostView_->render_widget_host_) { |
676 NativeWebKeyboardEvent event([[theEvent characters] characterAtIndex:0], | 677 NativeWebKeyboardEvent event([[theEvent characters] characterAtIndex:0], |
677 ToWebKitModifiers([theEvent modifierFlags]), | 678 ToWebKitModifiers([theEvent modifierFlags]), |
678 base::Time::Now().ToDoubleT()); | 679 base::Time::Now().ToDoubleT()); |
679 // We fire menu items on keydown, we don't want to activate menu items | 680 // We fire menu items on keydown, we don't want to activate menu items |
680 // twice. | 681 // twice. |
681 event.skip_in_browser = true; | 682 event.skip_in_browser = true; |
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1339 base::Time::Now().ToDoubleT()); | 1340 base::Time::Now().ToDoubleT()); |
1340 renderWidgetHostView_->render_widget_host_->ForwardKeyboardEvent(event); | 1341 renderWidgetHostView_->render_widget_host_->ForwardKeyboardEvent(event); |
1341 } else { | 1342 } else { |
1342 renderWidgetHostView_->render_widget_host_->ImeConfirmComposition( | 1343 renderWidgetHostView_->render_widget_host_->ImeConfirmComposition( |
1343 UTF8ToUTF16([im_text UTF8String])); | 1344 UTF8ToUTF16([im_text UTF8String])); |
1344 } | 1345 } |
1345 renderWidgetHostView_->im_composing_ = false; | 1346 renderWidgetHostView_->im_composing_ = false; |
1346 } | 1347 } |
1347 | 1348 |
1348 @end | 1349 @end |
OLD | NEW |