- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / constrained_window / constrained_window_sheet_info.mm
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/cocoa/constrained_window/constrained_window_sheet_info.h"
6
7 #include "base/mac/foundation_util.h"
8 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_sheet.h"
9 #include "chrome/browser/ui/cocoa/constrained_window/constrained_window_sheet_controller.h"
10
11 @implementation ConstrainedWindowSheetInfo
12
13 @synthesize sheetDidShow = sheetDidShow_;
14
15 - (id)initWithSheet:(id<ConstrainedWindowSheet>)sheet
16          parentView:(NSView*)parentView
17       overlayWindow:(NSWindow*)overlayWindow {
18   if ((self = [super init])) {
19     sheet_.reset([sheet retain]);
20     parentView_.reset([parentView retain]);
21     overlayWindow_.reset([overlayWindow retain]);
22   }
23   return self;
24 }
25
26 - (id<ConstrainedWindowSheet>)sheet {
27   return sheet_;
28 }
29
30 - (NSView*)parentView {
31   return parentView_;
32 }
33
34 - (NSWindow*)overlayWindow {
35   return overlayWindow_;
36 }
37
38 - (void)hideSheet {
39   [sheet_ hideSheet];
40
41   // Overlay window is already invisible so just stop accepting mouse events.
42   [overlayWindow_ setIgnoresMouseEvents:YES];
43
44   // Make sure the now invisible sheet doesn't keep keyboard focus
45   [[overlayWindow_ parentWindow] makeKeyWindow];
46 }
47
48 - (void)showSheet {
49   [overlayWindow_ setIgnoresMouseEvents:NO];
50   if (sheetDidShow_) {
51     [sheet_ unhideSheet];
52   } else {
53     [sheet_ showSheetForWindow:overlayWindow_];
54     sheetDidShow_ = YES;
55   }
56   [sheet_ makeSheetKeyAndOrderFront];
57 }
58
59 @end