diff options
author | rohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-18 16:58:08 +0000 |
---|---|---|
committer | rohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-18 16:58:08 +0000 |
commit | 357226a1f9f615379a0add23fb8c81a7f598c282 (patch) | |
tree | 16ab65ecad0ae46e903403f5fb17958aeda56712 /chrome/browser/autocomplete/autocomplete_edit_view_mac.mm | |
parent | 457f5cf27e7b74c5e6d161015532794f2ae88365 (diff) | |
download | chromium_src-357226a1f9f615379a0add23fb8c81a7f598c282.zip chromium_src-357226a1f9f615379a0add23fb8c81a7f598c282.tar.gz chromium_src-357226a1f9f615379a0add23fb8c81a7f598c282.tar.bz2 |
Add modifier key support for window open dispositions throught the Mac UI
* Add cocoa_utils.{h,mm} and a unit test for the one method it contains:
event_utils::DispositionFromEventFlags().
* Add modifier key support to the history menu, bookmark menu, infobars,
bookmark bar, and Omnibox.
BUG=17912,17301
TEST=When using the aforementioned UI elements, Cmd should open in new
foreground tab, Cmd+Shift should open in new background tab, and Shift should
open in a new window.
Patch by Robert Sesek.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23636 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autocomplete/autocomplete_edit_view_mac.mm')
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_mac.mm | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm index 2de70d1..9ba16ef 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm @@ -4,6 +4,7 @@ #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" +#include <Carbon/Carbon.h> // kVK_Return #include "app/gfx/font.h" #include "app/resource_bundle.h" #include "base/clipboard.h" @@ -15,6 +16,7 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/cocoa/autocomplete_text_field.h" #include "chrome/browser/tab_contents/tab_contents.h" +#import "chrome/common/cocoa_utils.h" // Focus-handling between |field_| and |model_| is a bit subtle. // Other platforms detect change of focus, which is inconvenient @@ -685,8 +687,14 @@ std::wstring AutocompleteEditViewMac::GetClipboardText(Clipboard* clipboard) { return YES; } - if (cmd == @selector(insertNewline:)) { - edit_view_->AcceptInput(CURRENT_TAB, false); + // |-noop:| is sent when the user presses Cmd+Return. Override the no-op + // behavior with the proper WindowOpenDisposition. + NSEvent* event = [NSApp currentEvent]; + if (cmd == @selector(insertNewline:) || + (cmd == @selector(noop:) && [event keyCode] == kVK_Return)) { + WindowOpenDisposition disposition = event_utils::DispositionFromEventFlags( + [event modifierFlags]); + edit_view_->AcceptInput(disposition, false); return YES; } @@ -696,7 +704,9 @@ std::wstring AutocompleteEditViewMac::GetClipboardText(Clipboard* clipboard) { // is safe to tell it twice. if (cmd == @selector(insertLineBreak:)) { edit_view_->OnControlKeyChanged(true); - edit_view_->AcceptInput(CURRENT_TAB, false); + WindowOpenDisposition disposition = event_utils::DispositionFromEventFlags( + [[NSApp currentEvent] modifierFlags]); + edit_view_->AcceptInput(disposition, false); return YES; } |