| Index: chrome/browser/cocoa/constrained_window_mac.mm
|
| diff --git a/chrome/browser/cocoa/constrained_window_mac.mm b/chrome/browser/cocoa/constrained_window_mac.mm
|
| index ed5cba0cd897ad76e928396b545193e8899106a9..521d90d1fbdc908401d88402aa4a2f61bf027e25 100644
|
| --- a/chrome/browser/cocoa/constrained_window_mac.mm
|
| +++ b/chrome/browser/cocoa/constrained_window_mac.mm
|
| @@ -11,25 +11,46 @@
|
|
|
| ConstrainedWindowMacDelegate::~ConstrainedWindowMacDelegate() {}
|
|
|
| +void ConstrainedWindowMacDelegateSystemSheetParams::RunSheet(
|
| + GTMWindowSheetController* sheetController,
|
| + NSView* view,
|
| + SEL frameSelector,
|
| + SEL positionSelector) {
|
| + DCHECK([params_ isKindOfClass:[NSArray class]]);
|
| + [sheetController beginSystemSheet:systemSheet_
|
| + modalForView:view
|
| + frameSelector:frameSelector
|
| + positionSelector:positionSelector
|
| + withParameters:params_];
|
| +}
|
| +
|
| void ConstrainedWindowMacDelegateSystemSheet::RunSheet(
|
| GTMWindowSheetController* sheetController,
|
| - NSView* view) {
|
| + NSView* view,
|
| + SEL frameSelector,
|
| + SEL positionSelector) {
|
| NSArray* params = [NSArray arrayWithObjects:
|
| [NSNull null], // window, must be [NSNull null]
|
| delegate_.get(),
|
| [NSValue valueWithPointer:didEndSelector_],
|
| [NSValue valueWithPointer:NULL], // context info for didEndSelector_.
|
| nil];
|
| - [sheetController beginSystemSheet:systemSheet_
|
| - modalForView:view
|
| - withParameters:params];
|
| + set_params(params);
|
| + ConstrainedWindowMacDelegateSystemSheetParams::RunSheet(sheetController,
|
| + view,
|
| + frameSelector,
|
| + positionSelector);
|
| }
|
|
|
| void ConstrainedWindowMacDelegateCustomSheet::RunSheet(
|
| GTMWindowSheetController* sheetController,
|
| - NSView* view) {
|
| + NSView* view,
|
| + SEL frameSelector,
|
| + SEL positionSelector) {
|
| [sheetController beginSheet:customSheet_.get()
|
| modalForView:view
|
| + frameSelector:frameSelector
|
| + positionSelector:positionSelector
|
| modalDelegate:delegate_.get()
|
| didEndSelector:didEndSelector_
|
| contextInfo:NULL];
|
| @@ -50,6 +71,8 @@ ConstrainedWindowMac::ConstrainedWindowMac(
|
| DCHECK(owner);
|
| DCHECK(delegate);
|
|
|
| + modality_level_ = delegate->GetModalityLevel();
|
| +
|
| // The TabContents only has a native window if it is currently visible. In
|
| // this case, open the sheet now. Else, Realize() will be called later, when
|
| // our tab becomes visible.
|
| @@ -67,12 +90,29 @@ void ConstrainedWindowMac::CloseConstrainedWindow() {
|
| // Note: controller_ can be `nil` here if the sheet was never realized. That's
|
| // ok.
|
| [controller_ removeConstrainedWindow:this];
|
| - delegate_->DeleteDelegate();
|
| - owner_->WillClose(this);
|
| +
|
| + DCHECK(delegate_);
|
| + if (delegate_)
|
| + delegate_->DeleteDelegate();
|
| +
|
| + DCHECK(owner_);
|
| + if (owner_)
|
| + owner_->WillClose(this);
|
|
|
| delete this;
|
| }
|
|
|
| +bool ConstrainedWindowMac::ParentWillDo(ConstrainedWindow::Event event) {
|
| + // Just get our delegate to handle it. If it doesn't do anything, call our
|
| + // super's handler.
|
| + DCHECK(delegate_);
|
| + if (delegate_) {
|
| + if (delegate_->ParentWillDo(event))
|
| + return true;
|
| + }
|
| + return ConstrainedWindow::ParentWillDo(event);
|
| +}
|
| +
|
| void ConstrainedWindowMac::Realize(BrowserWindowController* controller) {
|
| if (controller_ != nil) {
|
| DCHECK(controller_ == controller);
|
|
|