Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 #include "chrome/browser/ui/views/constrained_window_views.h" | 5 #include "chrome/browser/ui/views/constrained_window_views.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "chrome/browser/themes/theme_properties.h" | 9 #include "chrome/browser/themes/theme_properties.h" |
| 10 #include "chrome/browser/ui/browser_finder.h" | 10 #include "chrome/browser/ui/browser_finder.h" |
| (...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 563 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 563 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| 564 title_font_ = &rb.GetFont(ui::ResourceBundle::MediumFont); | 564 title_font_ = &rb.GetFont(ui::ResourceBundle::MediumFont); |
| 565 #endif | 565 #endif |
| 566 initialized = true; | 566 initialized = true; |
| 567 } | 567 } |
| 568 } | 568 } |
| 569 | 569 |
| 570 void UpdateWebContentsModalDialogPosition( | 570 void UpdateWebContentsModalDialogPosition( |
| 571 views::Widget* widget, | 571 views::Widget* widget, |
| 572 web_modal::WebContentsModalDialogHost* dialog_host) { | 572 web_modal::WebContentsModalDialogHost* dialog_host) { |
| 573 gfx::Size size = widget->GetWindowBoundsInScreen().size(); | 573 gfx::Size size = widget->non_client_view()->GetPreferredSize(); |
| 574 gfx::Point position = dialog_host->GetDialogPosition(size); | |
| 575 views::Border* border = | 574 views::Border* border = |
| 576 widget->non_client_view()->frame_view()->border(); | 575 widget->non_client_view()->frame_view()->border(); |
| 576 gfx::Size max_size = dialog_host->GetMaximumDialogSize(); | |
| 577 // Border may be null during widget initialization. | 577 // Border may be null during widget initialization. |
| 578 if (border) | |
| 579 max_size.set_height(max_size.height() + border->GetInsets().top()); | |
| 580 size.SetToMin(max_size); | |
| 581 | |
| 582 gfx::Point position = dialog_host->GetDialogPosition(size); | |
|
Mike Wittman
2013/08/22 17:46:10
Have you tested on other web contents modal dialog
Rune Fevang
2013/08/23 02:57:43
Yeah, works fine for all dialogs I tested on up to
| |
| 578 if (border) { | 583 if (border) { |
| 579 // Align the first row of pixels inside the border. This is the apparent | 584 // Align the first row of pixels inside the border. This is the apparent |
| 580 // top of the dialog. | 585 // top of the dialog. |
| 581 position.set_y(position.y() - border->GetInsets().top()); | 586 position.set_y(position.y() - border->GetInsets().top()); |
| 582 } | 587 } |
| 583 | 588 |
| 584 if (widget->is_top_level()) { | 589 if (widget->is_top_level()) { |
| 585 position += | 590 position += |
| 586 views::Widget::GetWidgetForNativeView(dialog_host->GetHostView())-> | 591 views::Widget::GetWidgetForNativeView(dialog_host->GetHostView())-> |
| 587 GetClientAreaBoundsInScreen().OffsetFromOrigin(); | 592 GetClientAreaBoundsInScreen().OffsetFromOrigin(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 626 #if defined(USE_ASH) | 631 #if defined(USE_ASH) |
| 627 ash::CustomFrameViewAsh* frame = new ash::CustomFrameViewAsh; | 632 ash::CustomFrameViewAsh* frame = new ash::CustomFrameViewAsh; |
| 628 frame->Init(widget); | 633 frame->Init(widget); |
| 629 // Always use "active" look. | 634 // Always use "active" look. |
| 630 frame->SetInactiveRenderingDisabled(true); | 635 frame->SetInactiveRenderingDisabled(true); |
| 631 return frame; | 636 return frame; |
| 632 #endif | 637 #endif |
| 633 return new ConstrainedWindowFrameView(widget, | 638 return new ConstrainedWindowFrameView(widget, |
| 634 browser_context->IsOffTheRecord()); | 639 browser_context->IsOffTheRecord()); |
| 635 } | 640 } |
| OLD | NEW |