OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
6 #import <QuartzCore/QuartzCore.h> | 6 #import <QuartzCore/QuartzCore.h> |
7 | 7 |
8 #import "chrome/browser/ui/cocoa/confirm_quit_panel_controller.h" | 8 #import "chrome/browser/ui/cocoa/confirm_quit_panel_controller.h" |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 @end | 168 @end |
169 | 169 |
170 // Private Interface /////////////////////////////////////////////////////////// | 170 // Private Interface /////////////////////////////////////////////////////////// |
171 | 171 |
172 @interface ConfirmQuitPanelController (Private) | 172 @interface ConfirmQuitPanelController (Private) |
173 - (void)animateFadeOut; | 173 - (void)animateFadeOut; |
174 - (NSEvent*)pumpEventQueueForKeyUp:(NSApplication*)app untilDate:(NSDate*)date; | 174 - (NSEvent*)pumpEventQueueForKeyUp:(NSApplication*)app untilDate:(NSDate*)date; |
175 - (void)hideAllWindowsForApplication:(NSApplication*)app | 175 - (void)hideAllWindowsForApplication:(NSApplication*)app |
176 withDuration:(NSTimeInterval)duration; | 176 withDuration:(NSTimeInterval)duration; |
177 // Returns the Accelerator for the Quit menu item. | 177 // Returns the Accelerator for the Quit menu item. |
178 + (scoped_ptr<ui::PlatformAcceleratorCocoa>)quitAccelerator; | 178 + (std::unique_ptr<ui::PlatformAcceleratorCocoa>)quitAccelerator; |
179 @end | 179 @end |
180 | 180 |
181 ConfirmQuitPanelController* g_confirmQuitPanelController = nil; | 181 ConfirmQuitPanelController* g_confirmQuitPanelController = nil; |
182 | 182 |
183 //////////////////////////////////////////////////////////////////////////////// | 183 //////////////////////////////////////////////////////////////////////////////// |
184 | 184 |
185 @implementation ConfirmQuitPanelController | 185 @implementation ConfirmQuitPanelController |
186 | 186 |
187 + (ConfirmQuitPanelController*)sharedController { | 187 + (ConfirmQuitPanelController*)sharedController { |
188 if (!g_confirmQuitPanelController) { | 188 if (!g_confirmQuitPanelController) { |
(...skipping 30 matching lines...) Expand all Loading... |
219 } | 219 } |
220 return self; | 220 return self; |
221 } | 221 } |
222 | 222 |
223 + (BOOL)eventTriggersFeature:(NSEvent*)event { | 223 + (BOOL)eventTriggersFeature:(NSEvent*)event { |
224 if ([event type] != NSKeyDown) | 224 if ([event type] != NSKeyDown) |
225 return NO; | 225 return NO; |
226 ui::PlatformAcceleratorCocoa eventAccelerator( | 226 ui::PlatformAcceleratorCocoa eventAccelerator( |
227 [event charactersIgnoringModifiers], | 227 [event charactersIgnoringModifiers], |
228 [event modifierFlags] & NSDeviceIndependentModifierFlagsMask); | 228 [event modifierFlags] & NSDeviceIndependentModifierFlagsMask); |
229 scoped_ptr<ui::PlatformAcceleratorCocoa> quitAccelerator( | 229 std::unique_ptr<ui::PlatformAcceleratorCocoa> quitAccelerator( |
230 [self quitAccelerator]); | 230 [self quitAccelerator]); |
231 return quitAccelerator->Equals(eventAccelerator); | 231 return quitAccelerator->Equals(eventAccelerator); |
232 } | 232 } |
233 | 233 |
234 - (NSApplicationTerminateReply)runModalLoopForApplication:(NSApplication*)app { | 234 - (NSApplicationTerminateReply)runModalLoopForApplication:(NSApplication*)app { |
235 base::scoped_nsobject<ConfirmQuitPanelController> keepAlive([self retain]); | 235 base::scoped_nsobject<ConfirmQuitPanelController> keepAlive([self retain]); |
236 | 236 |
237 // If this is the second of two such attempts to quit within a certain time | 237 // If this is the second of two such attempts to quit within a certain time |
238 // interval, then just quit. | 238 // interval, then just quit. |
239 // Time of last quit attempt, if any. | 239 // Time of last quit attempt, if any. |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 } | 356 } |
357 | 357 |
358 - (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)finished { | 358 - (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)finished { |
359 [self close]; | 359 [self close]; |
360 } | 360 } |
361 | 361 |
362 // This looks at the Main Menu and determines what the user has set as the | 362 // This looks at the Main Menu and determines what the user has set as the |
363 // key combination for quit. It then gets the modifiers and builds a string | 363 // key combination for quit. It then gets the modifiers and builds a string |
364 // to display them. | 364 // to display them. |
365 + (NSString*)keyCommandString { | 365 + (NSString*)keyCommandString { |
366 scoped_ptr<ui::PlatformAcceleratorCocoa> accelerator([self quitAccelerator]); | 366 std::unique_ptr<ui::PlatformAcceleratorCocoa> accelerator( |
| 367 [self quitAccelerator]); |
367 return [[self class] keyCombinationForAccelerator:*accelerator]; | 368 return [[self class] keyCombinationForAccelerator:*accelerator]; |
368 } | 369 } |
369 | 370 |
370 // Runs a nested loop that pumps the event queue until the next KeyUp event. | 371 // Runs a nested loop that pumps the event queue until the next KeyUp event. |
371 - (NSEvent*)pumpEventQueueForKeyUp:(NSApplication*)app untilDate:(NSDate*)date { | 372 - (NSEvent*)pumpEventQueueForKeyUp:(NSApplication*)app untilDate:(NSDate*)date { |
372 return [app nextEventMatchingMask:NSKeyUpMask | 373 return [app nextEventMatchingMask:NSKeyUpMask |
373 untilDate:date | 374 untilDate:date |
374 inMode:NSEventTrackingRunLoopMode | 375 inMode:NSEventTrackingRunLoopMode |
375 dequeue:YES]; | 376 dequeue:YES]; |
376 } | 377 } |
377 | 378 |
378 // Iterates through the list of open windows and hides them all. | 379 // Iterates through the list of open windows and hides them all. |
379 - (void)hideAllWindowsForApplication:(NSApplication*)app | 380 - (void)hideAllWindowsForApplication:(NSApplication*)app |
380 withDuration:(NSTimeInterval)duration { | 381 withDuration:(NSTimeInterval)duration { |
381 FadeAllWindowsAnimation* animation = | 382 FadeAllWindowsAnimation* animation = |
382 [[FadeAllWindowsAnimation alloc] initWithApplication:app | 383 [[FadeAllWindowsAnimation alloc] initWithApplication:app |
383 animationDuration:duration]; | 384 animationDuration:duration]; |
384 // Releases itself when the animation stops. | 385 // Releases itself when the animation stops. |
385 [animation startAnimation]; | 386 [animation startAnimation]; |
386 } | 387 } |
387 | 388 |
388 // This looks at the Main Menu and determines what the user has set as the | 389 // This looks at the Main Menu and determines what the user has set as the |
389 // key combination for quit. It then gets the modifiers and builds an object | 390 // key combination for quit. It then gets the modifiers and builds an object |
390 // to hold the data. | 391 // to hold the data. |
391 + (scoped_ptr<ui::PlatformAcceleratorCocoa>)quitAccelerator { | 392 + (std::unique_ptr<ui::PlatformAcceleratorCocoa>)quitAccelerator { |
392 NSMenu* mainMenu = [NSApp mainMenu]; | 393 NSMenu* mainMenu = [NSApp mainMenu]; |
393 // Get the application menu (i.e. Chromium). | 394 // Get the application menu (i.e. Chromium). |
394 NSMenu* appMenu = [[mainMenu itemAtIndex:0] submenu]; | 395 NSMenu* appMenu = [[mainMenu itemAtIndex:0] submenu]; |
395 for (NSMenuItem* item in [appMenu itemArray]) { | 396 for (NSMenuItem* item in [appMenu itemArray]) { |
396 // Find the Quit item. | 397 // Find the Quit item. |
397 if ([item action] == @selector(terminate:)) { | 398 if ([item action] == @selector(terminate:)) { |
398 return scoped_ptr<ui::PlatformAcceleratorCocoa>( | 399 return std::unique_ptr<ui::PlatformAcceleratorCocoa>( |
399 new ui::PlatformAcceleratorCocoa([item keyEquivalent], | 400 new ui::PlatformAcceleratorCocoa([item keyEquivalent], |
400 [item keyEquivalentModifierMask])); | 401 [item keyEquivalentModifierMask])); |
401 } | 402 } |
402 } | 403 } |
403 // Default to Cmd+Q. | 404 // Default to Cmd+Q. |
404 return scoped_ptr<ui::PlatformAcceleratorCocoa>( | 405 return std::unique_ptr<ui::PlatformAcceleratorCocoa>( |
405 new ui::PlatformAcceleratorCocoa(@"q", NSCommandKeyMask)); | 406 new ui::PlatformAcceleratorCocoa(@"q", NSCommandKeyMask)); |
406 } | 407 } |
407 | 408 |
408 + (NSString*)keyCombinationForAccelerator: | 409 + (NSString*)keyCombinationForAccelerator: |
409 (const ui::PlatformAcceleratorCocoa&)item { | 410 (const ui::PlatformAcceleratorCocoa&)item { |
410 NSMutableString* string = [NSMutableString string]; | 411 NSMutableString* string = [NSMutableString string]; |
411 NSUInteger modifiers = item.modifier_mask(); | 412 NSUInteger modifiers = item.modifier_mask(); |
412 | 413 |
413 if (modifiers & NSCommandKeyMask) | 414 if (modifiers & NSCommandKeyMask) |
414 [string appendString:@"\u2318"]; | 415 [string appendString:@"\u2318"]; |
415 if (modifiers & NSControlKeyMask) | 416 if (modifiers & NSControlKeyMask) |
416 [string appendString:@"\u2303"]; | 417 [string appendString:@"\u2303"]; |
417 if (modifiers & NSAlternateKeyMask) | 418 if (modifiers & NSAlternateKeyMask) |
418 [string appendString:@"\u2325"]; | 419 [string appendString:@"\u2325"]; |
419 if (modifiers & NSShiftKeyMask) | 420 if (modifiers & NSShiftKeyMask) |
420 [string appendString:@"\u21E7"]; | 421 [string appendString:@"\u21E7"]; |
421 | 422 |
422 [string appendString:[item.characters() uppercaseString]]; | 423 [string appendString:[item.characters() uppercaseString]]; |
423 return string; | 424 return string; |
424 } | 425 } |
425 | 426 |
426 @end | 427 @end |
OLD | NEW |