app_list_window_controller.mm revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#import "ui/app_list/cocoa/app_list_window_controller.h" 6 7#include "ui/app_list/app_list_view_delegate.h" 8#import "ui/app_list/cocoa/app_list_view_controller.h" 9#import "ui/app_list/cocoa/apps_grid_controller.h" 10#include "ui/base/cocoa/window_size_constants.h" 11 12@interface AppListWindow : NSWindow; 13@end 14 15@implementation AppListWindow 16 17// If we initialize a window with NSBorderlessWindowMask, it will not accept key 18// events (among other things) unless canBecomeKeyWindow is overridden. 19- (BOOL)canBecomeKeyWindow { 20 return YES; 21} 22 23- (BOOL)canBecomeMainWindow { 24 return YES; 25} 26 27@end 28 29@implementation AppListWindowController; 30 31- (id)init { 32 base::scoped_nsobject<NSWindow> controlledWindow( 33 [[AppListWindow alloc] initWithContentRect:ui::kWindowSizeDeterminedLater 34 styleMask:NSBorderlessWindowMask 35 backing:NSBackingStoreBuffered 36 defer:NO]); 37 [controlledWindow setReleasedWhenClosed:NO]; 38 [controlledWindow setBackgroundColor:[NSColor clearColor]]; 39 [controlledWindow setOpaque:NO]; 40 [controlledWindow setHasShadow:YES]; 41 [controlledWindow setLevel:NSDockWindowLevel]; 42 43 if ((self = [super initWithWindow:controlledWindow])) { 44 appListViewController_.reset([[AppListViewController alloc] init]); 45 [[self window] setFrame:[[appListViewController_ view] bounds] 46 display:NO]; 47 [[self window] setContentView:[appListViewController_ view]]; 48 [[self window] setDelegate:self]; 49 } 50 return self; 51} 52 53- (AppListViewController*)appListViewController { 54 return appListViewController_; 55} 56 57- (void)windowDidResignMain:(NSNotification*)notification { 58 if ([appListViewController_ delegate]) 59 [appListViewController_ delegate]->Dismiss(); 60} 61 62@end 63