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

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

Issue 1255783002: [Mac] Factor out keyboard shortcut handling from ChromeEventProcessingWindow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@execute
Patch Set: Fix a few things. Created 5 years, 4 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 (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 #import "chrome/browser/ui/cocoa/browser_window_utils.h" 5 #import "chrome/browser/ui/cocoa/browser_window_utils.h"
6 6
7 #include <Carbon/Carbon.h> 7 #include <Carbon/Carbon.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #import "base/mac/foundation_util.h"
10 #include "chrome/app/chrome_command_ids.h" 11 #include "chrome/app/chrome_command_ids.h"
11 #include "chrome/browser/global_keyboard_shortcuts_mac.h" 12 #include "chrome/browser/global_keyboard_shortcuts_mac.h"
12 #include "chrome/browser/ui/browser.h" 13 #include "chrome/browser/ui/browser.h"
14 #import "chrome/browser/ui/cocoa/chrome_command_dispatch_delegate.h"
13 #import "chrome/browser/ui/cocoa/chrome_event_processing_window.h" 15 #import "chrome/browser/ui/cocoa/chrome_event_processing_window.h"
14 #import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h" 16 #import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h"
15 #include "content/public/browser/native_web_keyboard_event.h" 17 #include "content/public/browser/native_web_keyboard_event.h"
16 18
17 using content::NativeWebKeyboardEvent; 19 using content::NativeWebKeyboardEvent;
18 20
19 @implementation BrowserWindowUtils 21 @implementation BrowserWindowUtils
20 + (BOOL)shouldHandleKeyboardEvent:(const NativeWebKeyboardEvent&)event { 22 + (BOOL)shouldHandleKeyboardEvent:(const NativeWebKeyboardEvent&)event {
21 if (event.skip_in_browser || event.type == NativeWebKeyboardEvent::Char) 23 if (event.skip_in_browser || event.type == NativeWebKeyboardEvent::Char)
22 return NO; 24 return NO;
23 DCHECK(event.os_event != NULL); 25 DCHECK(event.os_event != NULL);
24 return YES; 26 return YES;
25 } 27 }
26 28
27 + (int)getCommandId:(const NativeWebKeyboardEvent&)event { 29 + (int)getCommandId:(const NativeWebKeyboardEvent&)event {
28 return CommandForKeyEvent(event.os_event); 30 return CommandForKeyEvent(event.os_event);
29 } 31 }
30 32
31 + (BOOL)handleKeyboardEvent:(NSEvent*)event 33 + (BOOL)handleKeyboardEvent:(NSEvent*)event
32 inWindow:(NSWindow*)window { 34 inWindow:(NSWindow*)window {
33 ChromeEventProcessingWindow* event_window = 35 ChromeEventProcessingWindow* event_window =
34 static_cast<ChromeEventProcessingWindow*>(window); 36 base::mac::ObjCCastStrict<ChromeEventProcessingWindow>(window);
35 DCHECK([event_window isKindOfClass:[ChromeEventProcessingWindow class]]); 37 ChromeCommandDispatchDelegate* command_delegate =
38 base::mac::ObjCCastStrict<ChromeCommandDispatchDelegate>(
39 [event_window commandDelegate]);
36 40
37 // Do not fire shortcuts on key up. 41 // Do not fire shortcuts on key up.
38 if ([event type] == NSKeyDown) { 42 if ([event type] == NSKeyDown) {
39 // Send the event to the menu before sending it to the browser/window 43 // Send the event to the menu before sending it to the browser/window
40 // shortcut handling, so that if a user configures cmd-left to mean 44 // shortcut handling, so that if a user configures cmd-left to mean
41 // "previous tab", it takes precedence over the built-in "history back" 45 // "previous tab", it takes precedence over the built-in "history back"
42 // binding. Other than that, the |-redispatchKeyEvent:| call would take care 46 // binding. Other than that, the |-redispatchKeyEvent:| call would take care
43 // of invoking the original menu item shortcut as well. 47 // of invoking the original menu item shortcut as well.
44 48
45 if ([[NSApp mainMenu] performKeyEquivalent:event]) 49 if ([[NSApp mainMenu] performKeyEquivalent:event])
46 return true; 50 return true;
47 51
48 if ([event_window handleExtraKeyboardShortcut:event]) 52 if ([command_delegate handleExtraKeyboardShortcut:event window:window])
tapted 2015/07/31 03:06:49 If it's cleaner, I think it's OK to leave handleEx
jackhou1 2015/08/04 01:03:58 Done.
49 return true; 53 return true;
50 } 54 }
51 55
52 return [event_window redispatchKeyEvent:event]; 56 return [event_window redispatchKeyEvent:event];
53 } 57 }
54 58
55 + (NSString*)scheduleReplaceOldTitle:(NSString*)oldTitle 59 + (NSString*)scheduleReplaceOldTitle:(NSString*)oldTitle
56 withNewTitle:(NSString*)newTitle 60 withNewTitle:(NSString*)newTitle
57 forWindow:(NSWindow*)window { 61 forWindow:(NSWindow*)window {
58 if (oldTitle) 62 if (oldTitle)
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 + (void)activateWindowForController:(NSWindowController*)controller { 130 + (void)activateWindowForController:(NSWindowController*)controller {
127 // Per http://crbug.com/73779 and http://crbug.com/75223, we need this to 131 // Per http://crbug.com/73779 and http://crbug.com/75223, we need this to
128 // properly activate windows if Chrome is not the active application. 132 // properly activate windows if Chrome is not the active application.
129 [[controller window] makeKeyAndOrderFront:controller]; 133 [[controller window] makeKeyAndOrderFront:controller];
130 ProcessSerialNumber psn; 134 ProcessSerialNumber psn;
131 GetCurrentProcess(&psn); 135 GetCurrentProcess(&psn);
132 SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly); 136 SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
133 } 137 }
134 138
135 @end 139 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698