• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
60