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

Side by Side Diff: chrome/browser/ui/cocoa/chrome_command_dispatcher_delegate.mm

Issue 2074643003: MacViews: Views accelerators table should match the Cocoa one. (Closed) Base URL: ssh://bitbucket.browser.yandex-team.ru/chromium/src.git@master
Patch Set: Fix review issues. Created 4 years, 2 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "chrome/browser/ui/cocoa/chrome_command_dispatcher_delegate.h" 5 #import "chrome/browser/ui/cocoa/chrome_command_dispatcher_delegate.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/global_keyboard_shortcuts_mac.h" 8 #include "chrome/browser/global_keyboard_shortcuts_mac.h"
9 #include "chrome/browser/ui/browser_commands.h" 9 #include "chrome/browser/ui/browser_commands.h"
10 #include "chrome/browser/ui/browser_finder.h" 10 #include "chrome/browser/ui/browser_finder.h"
11 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h" 11 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h"
12 #import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h" 12 #import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h"
13 13
14 namespace { 14 namespace {
15 15
16 // Type of functions listed in global_keyboard_shortcuts_mac.h. 16 bool HandleExtraWindowKeyboardShortcut(NSEvent* event, NSWindow* window) {
17 typedef int (*KeyToCommandMapper)(bool, bool, bool, bool, int, unichar); 17 return command_dispatcher::HandleExtraKeyboardShortcut(
18 event, window, CommandForWindowKeyboardShortcut);
19 }
18 20
19 // If the event is for a Browser window, and the key combination has an 21 bool HandleDelayedWindowKeyboardShortcut(NSEvent* event, NSWindow* window) {
20 // associated command, execute the command. 22 return command_dispatcher::HandleExtraKeyboardShortcut(
23 event, window, CommandForDelayedWindowKeyboardShortcut);
24 }
25
26 bool HandleExtraBrowserKeyboardShortcut(NSEvent* event, NSWindow* window) {
27 return command_dispatcher::HandleExtraKeyboardShortcut(
28 event, window, CommandForBrowserKeyboardShortcut);
29 }
30
31 } // namespace
32
33 namespace command_dispatcher {
34
21 bool HandleExtraKeyboardShortcut( 35 bool HandleExtraKeyboardShortcut(
22 NSEvent* event, 36 NSEvent* event,
23 NSWindow* window, 37 NSWindow* window,
24 KeyToCommandMapper command_for_keyboard_shortcut) { 38 KeyToCommandMapper command_for_keyboard_shortcut) {
25 // Extract info from |event|. 39 // Extract info from |event|.
26 NSUInteger modifers = [event modifierFlags]; 40 NSUInteger modifers = [event modifierFlags];
27 const bool command = modifers & NSCommandKeyMask; 41 const bool command = modifers & NSCommandKeyMask;
28 const bool shift = modifers & NSShiftKeyMask; 42 const bool shift = modifers & NSShiftKeyMask;
29 const bool control = modifers & NSControlKeyMask; 43 const bool control = modifers & NSControlKeyMask;
30 const bool option = modifers & NSAlternateKeyMask; 44 const bool option = modifers & NSAlternateKeyMask;
31 const int key_code = [event keyCode]; 45 const int key_code = [event keyCode];
32 const unichar key_char = KeyCharacterForEvent(event); 46 const unichar key_char = KeyCharacterForEvent(event);
33 47
34 int cmd = command_for_keyboard_shortcut(command, shift, control, option, 48 int cmd = command_for_keyboard_shortcut(command, shift, control, option,
35 key_code, key_char); 49 key_code, key_char);
36 50
37 if (cmd == -1) 51 if (cmd == -1)
38 return false; 52 return false;
39 53
40 // Only handle event if this is a browser window. 54 // Only handle event if this is a browser window.
41 Browser* browser = chrome::FindBrowserWithWindow(window); 55 Browser* browser = chrome::FindBrowserWithWindow(window);
42 if (!browser) 56 if (!browser)
43 return false; 57 return false;
44 58
45 chrome::ExecuteCommand(browser, cmd); 59 chrome::ExecuteCommand(browser, cmd);
46 return true; 60 return true;
47 } 61 }
48 62
49 bool HandleExtraWindowKeyboardShortcut(NSEvent* event, NSWindow* window) { 63 } // namespace command_dispatcher
50 return HandleExtraKeyboardShortcut(event, window,
51 CommandForWindowKeyboardShortcut);
52 }
53
54 bool HandleDelayedWindowKeyboardShortcut(NSEvent* event, NSWindow* window) {
55 return HandleExtraKeyboardShortcut(event, window,
56 CommandForDelayedWindowKeyboardShortcut);
57 }
58
59 bool HandleExtraBrowserKeyboardShortcut(NSEvent* event, NSWindow* window) {
60 return HandleExtraKeyboardShortcut(event, window,
61 CommandForBrowserKeyboardShortcut);
62 }
63
64 } // namespace
65 64
66 @implementation ChromeCommandDispatcherDelegate 65 @implementation ChromeCommandDispatcherDelegate
67 66
68 - (BOOL)handleExtraKeyboardShortcut:(NSEvent*)event window:(NSWindow*)window { 67 - (BOOL)handleExtraKeyboardShortcut:(NSEvent*)event window:(NSWindow*)window {
69 return HandleExtraBrowserKeyboardShortcut(event, window) || 68 return HandleExtraBrowserKeyboardShortcut(event, window) ||
70 HandleExtraWindowKeyboardShortcut(event, window) || 69 HandleExtraWindowKeyboardShortcut(event, window) ||
71 HandleDelayedWindowKeyboardShortcut(event, window); 70 HandleDelayedWindowKeyboardShortcut(event, window);
72 } 71 }
73 72
74 - (BOOL)eventHandledByExtensionCommand:(NSEvent*)event 73 - (BOOL)eventHandledByExtensionCommand:(NSEvent*)event
(...skipping 25 matching lines...) Expand all
100 return HandleExtraWindowKeyboardShortcut(event, window); 99 return HandleExtraWindowKeyboardShortcut(event, window);
101 } 100 }
102 101
103 - (BOOL)postPerformKeyEquivalent:(NSEvent*)event window:(NSWindow*)window { 102 - (BOOL)postPerformKeyEquivalent:(NSEvent*)event window:(NSWindow*)window {
104 // Handle per-window shortcuts like Esc after giving everybody else a chance 103 // Handle per-window shortcuts like Esc after giving everybody else a chance
105 // to handle them 104 // to handle them
106 return HandleDelayedWindowKeyboardShortcut(event, window); 105 return HandleDelayedWindowKeyboardShortcut(event, window);
107 } 106 }
108 107
109 @end // ChromeCommandDispatchDelegate 108 @end // ChromeCommandDispatchDelegate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698