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

Unified Diff: components/constrained_window/constrained_window_views.cc

Issue 2172363002: Created min size for print preview dialog and modified to allow the Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change to CrOS only. Created 4 years, 4 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: components/constrained_window/constrained_window_views.cc
diff --git a/components/constrained_window/constrained_window_views.cc b/components/constrained_window/constrained_window_views.cc
index def5232fc9782603559d380c6499264f1c8ac6b5..33e50c5a4ffe4173971110dc07f4fe47fa9ee1f6 100644
--- a/components/constrained_window/constrained_window_views.cc
+++ b/components/constrained_window/constrained_window_views.cc
@@ -18,6 +18,10 @@
#include "ui/views/widget/widget_observer.h"
#include "ui/views/window/dialog_delegate.h"
+#if defined(USE_AURA)
+#include "ui/wm/core/window_modality_controller.h"
+#endif
+
using web_modal::ModalDialogHost;
using web_modal::ModalDialogHostObserver;
@@ -96,6 +100,21 @@ void UpdateModalDialogPosition(views::Widget* widget,
position +=
views::Widget::GetWidgetForNativeView(dialog_host->GetHostView())->
GetClientAreaBoundsInScreen().OffsetFromOrigin();
+ } else {
+ bool* independent_bounds = NULL;
+#if defined(USE_AURA)
+ independent_bounds = static_cast<bool*>(
+ widget->GetNativeWindowProperty(wm::kHasIndependentBoundsKey));
+#endif
+ if (independent_bounds && *independent_bounds) {
+ gfx::Rect bound =
+ views::Widget::GetWidgetForNativeView(dialog_host->GetHostView())
+ ->GetClientAreaBoundsInScreen();
+ if (bound.width() - border->GetInsets().left() < size.width()) {
Mike Wittman 2016/08/12 22:51:34 comment what this logic is doing
rbpotter 2016/08/15 18:03:45 Done.
+ position.set_x(position.x() + (size.width() - bound.width()) / 2 +
+ border->GetInsets().left());
+ }
+ }
}
widget->SetBounds(gfx::Rect(position, size));
@@ -122,7 +141,14 @@ void UpdateWebContentsModalDialogPosition(
// Border may be null during widget initialization.
if (border)
max_size.Enlarge(0, border->GetInsets().top());
- size.SetToMin(max_size);
+ bool* independent_bounds = NULL;
+#if defined(USE_AURA)
+ independent_bounds = static_cast<bool*>(
+ widget->GetNativeWindowProperty(wm::kHasIndependentBoundsKey));
+#endif
+ if (!(independent_bounds && *independent_bounds)) {
+ size.SetToMin(max_size);
+ }
UpdateModalDialogPosition(widget, dialog_host, size);
}
@@ -146,6 +172,20 @@ views::Widget* ShowWebModalDialogViews(
return widget;
}
+views::Widget* ShowNonClippedWebModalDialogViews(
+ views::WidgetDelegate* dialog,
+ content::WebContents* initiator_web_contents) {
+ DCHECK(constrained_window_views_client);
+ // For embedded WebContents, use the embedder's WebContents for constrained
+ // window.
+ content::WebContents* web_contents =
+ guest_view::GuestViewBase::GetTopLevelWebContents(initiator_web_contents);
+ views::Widget* widget = CreateWebModalDialogViews(dialog, web_contents);
+ web_modal::WebContentsModalDialogManager::FromWebContents(web_contents)
+ ->ShowNonClippedModalDialog(widget->GetNativeWindow());
+ return widget;
+}
+
views::Widget* CreateWebModalDialogViews(views::WidgetDelegate* dialog,
content::WebContents* web_contents) {
DCHECK_EQ(ui::MODAL_TYPE_CHILD, dialog->GetModalType());
@@ -192,4 +232,4 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog,
return widget;
}
-} // namespace constrained window
+} // namespace constrained_window

Powered by Google App Engine
This is Rietveld 408576698