OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/ui/cocoa/html_dialog_window_controller.h" | 5 #import "chrome/browser/ui/cocoa/html_dialog_window_controller.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/scoped_nsobject.h" | 8 #include "base/memory/scoped_nsobject.h" |
9 #include "base/sys_string_conversions.h" | 9 #include "base/sys_string_conversions.h" |
10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 } | 251 } |
252 | 252 |
253 - (id)initWithDelegate:(HtmlDialogUIDelegate*)delegate | 253 - (id)initWithDelegate:(HtmlDialogUIDelegate*)delegate |
254 profile:(Profile*)profile { | 254 profile:(Profile*)profile { |
255 DCHECK(delegate); | 255 DCHECK(delegate); |
256 DCHECK(profile); | 256 DCHECK(profile); |
257 | 257 |
258 gfx::Size dialogSize; | 258 gfx::Size dialogSize; |
259 delegate->GetDialogSize(&dialogSize); | 259 delegate->GetDialogSize(&dialogSize); |
260 NSRect dialogRect = NSMakeRect(0, 0, dialogSize.width(), dialogSize.height()); | 260 NSRect dialogRect = NSMakeRect(0, 0, dialogSize.width(), dialogSize.height()); |
261 // TODO(akalin): Make the window resizable (but with the minimum size being | 261 NSUInteger style = NSTitledWindowMask | NSClosableWindowMask | |
262 // dialog_size and always on top (but not modal) to match the Windows | 262 NSResizableWindowMask; |
263 // behavior. On the other hand, the fact that HTML dialogs on Windows | |
264 // are resizable could just be an accident. Investigate futher... | |
265 NSUInteger style = NSTitledWindowMask | NSClosableWindowMask; | |
266 scoped_nsobject<ChromeEventProcessingWindow> window( | 263 scoped_nsobject<ChromeEventProcessingWindow> window( |
267 [[ChromeEventProcessingWindow alloc] | 264 [[ChromeEventProcessingWindow alloc] |
268 initWithContentRect:dialogRect | 265 initWithContentRect:dialogRect |
269 styleMask:style | 266 styleMask:style |
270 backing:NSBackingStoreBuffered | 267 backing:NSBackingStoreBuffered |
271 defer:YES]); | 268 defer:YES]); |
272 if (!window.get()) { | 269 if (!window.get()) { |
273 return nil; | 270 return nil; |
274 } | 271 } |
275 self = [super initWithWindow:window]; | 272 self = [super initWithWindow:window]; |
276 if (!self) { | 273 if (!self) { |
277 return nil; | 274 return nil; |
278 } | 275 } |
279 [window setWindowController:self]; | 276 [window setWindowController:self]; |
280 [window setDelegate:self]; | 277 [window setDelegate:self]; |
281 [window setTitle:base::SysUTF16ToNSString(delegate->GetDialogTitle())]; | 278 [window setTitle:base::SysUTF16ToNSString(delegate->GetDialogTitle())]; |
| 279 [window setMinSize:dialogRect.size]; |
282 [window center]; | 280 [window center]; |
283 delegate_.reset(new HtmlDialogWindowDelegateBridge(self, profile, delegate)); | 281 delegate_.reset(new HtmlDialogWindowDelegateBridge(self, profile, delegate)); |
284 return self; | 282 return self; |
285 } | 283 } |
286 | 284 |
287 - (void)loadDialogContents { | 285 - (void)loadDialogContents { |
288 tabContents_.reset(new TabContents( | 286 tabContents_.reset(new TabContents( |
289 delegate_->profile(), NULL, MSG_ROUTING_NONE, NULL, NULL)); | 287 delegate_->profile(), NULL, MSG_ROUTING_NONE, NULL, NULL)); |
290 [[self window] setContentView:tabContents_->GetNativeView()]; | 288 [[self window] setContentView:tabContents_->GetNativeView()]; |
291 tabContents_->set_delegate(delegate_.get()); | 289 tabContents_->set_delegate(delegate_.get()); |
(...skipping 13 matching lines...) Expand all Loading... |
305 // TODO(akalin): Figure out why implementing (void)cancel:(id)sender | 303 // TODO(akalin): Figure out why implementing (void)cancel:(id)sender |
306 // to do the above doesn't work. | 304 // to do the above doesn't work. |
307 } | 305 } |
308 | 306 |
309 - (void)windowWillClose:(NSNotification*)notification { | 307 - (void)windowWillClose:(NSNotification*)notification { |
310 delegate_->WindowControllerClosed(); | 308 delegate_->WindowControllerClosed(); |
311 [self autorelease]; | 309 [self autorelease]; |
312 } | 310 } |
313 | 311 |
314 @end | 312 @end |
OLD | NEW |