Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(630)

Unified Diff: chrome/browser/cocoa/constrained_window_mac.mm

Issue 164547: Mac: make save/open dialogs operate as tab-modal sheets.... Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Painfully (but hopefully correctly) merged ToT. Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
« no previous file with comments | « chrome/browser/cocoa/constrained_window_mac.h ('k') | chrome/browser/cocoa/download_request_dialog_delegate_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698