Index: chrome/browser/ui/gtk/apps/native_app_window_gtk.cc |
diff --git a/chrome/browser/ui/gtk/apps/native_app_window_gtk.cc b/chrome/browser/ui/gtk/apps/native_app_window_gtk.cc |
index 1216992ae4a349cc2900421f97f84535e6efba31..c421c0a6b695db4c72ed844f6bc595bf03cf207f 100644 |
--- a/chrome/browser/ui/gtk/apps/native_app_window_gtk.cc |
+++ b/chrome/browser/ui/gtk/apps/native_app_window_gtk.cc |
@@ -61,30 +61,36 @@ NativeAppWindowGtk::NativeAppWindowGtk(AppWindow* app_window, |
web_contents()->GetView()->GetNativeView(); |
gtk_container_add(GTK_CONTAINER(window_), native_view); |
- if (params.bounds.x() != INT_MIN && params.bounds.y() != INT_MIN) |
- gtk_window_move(window_, params.bounds.x(), params.bounds.y()); |
+ gfx::Insets frame_insets = GetFrameInsets(); |
+ gfx::Rect initial_bounds = params.GetInitialWindowBounds(frame_insets); |
+ |
+ typedef apps::AppWindow::BoundsSpecification BoundsSpecification; |
+ if (initial_bounds.x() != BoundsSpecification::kUnspecifiedPosition && |
+ initial_bounds.y() != BoundsSpecification::kUnspecifiedPosition) { |
+ gtk_window_move(window_, initial_bounds.x(), initial_bounds.y()); |
+ } |
// This is done to avoid a WM "feature" where setting the window size to |
// the monitor size causes the WM to set the EWMH for full screen mode. |
- int win_height = params.bounds.height(); |
+ int win_height = initial_bounds.height(); |
if (frameless_ && |
- gtk_window_util::BoundsMatchMonitorSize(window_, params.bounds)) { |
+ gtk_window_util::BoundsMatchMonitorSize(window_, initial_bounds)) { |
win_height -= 1; |
} |
- gtk_window_set_default_size(window_, params.bounds.width(), win_height); |
+ gtk_window_set_default_size(window_, initial_bounds.width(), win_height); |
resizable_ = params.resizable; |
if (!resizable_) { |
// If the window doesn't have a size request when we set resizable to |
// false, GTK will shrink the window to 1x1px. |
gtk_widget_set_size_request(GTK_WIDGET(window_), |
- params.bounds.width(), win_height); |
+ initial_bounds.width(), win_height); |
gtk_window_set_resizable(window_, FALSE); |
} |
// make sure bounds_ and restored_bounds_ have correct values until we |
// get our first configure-event |
- bounds_ = restored_bounds_ = params.bounds; |
+ bounds_ = restored_bounds_ = initial_bounds; |
gint x, y; |
gtk_window_get_position(window_, &x, &y); |
bounds_.set_origin(gfx::Point(x, y)); |
@@ -96,9 +102,11 @@ NativeAppWindowGtk::NativeAppWindowGtk(AppWindow* app_window, |
if (always_on_top_) |
gtk_window_set_keep_above(window_, TRUE); |
- size_constraints_.set_minimum_size(params.minimum_size); |
- size_constraints_.set_maximum_size(params.maximum_size); |
- UpdateWindowMinMaxSize(); |
+ size_constraints_.set_minimum_size( |
+ params.GetContentMinimumSize(frame_insets)); |
+ size_constraints_.set_maximum_size( |
+ params.GetContentMaximumSize(frame_insets)); |
+ UpdateContentMinMaxSize(); |
// In some (older) versions of compiz, raising top-level windows when they |
// are partially off-screen causes them to get snapped back on screen, not |
@@ -479,7 +487,7 @@ void NativeAppWindowGtk::OnConfigureDebounced() { |
} |
} |
-void NativeAppWindowGtk::UpdateWindowMinMaxSize() { |
+void NativeAppWindowGtk::UpdateContentMinMaxSize() { |
GdkGeometry hints; |
int hints_mask = 0; |
if (size_constraints_.HasMinimumSize()) { |
@@ -739,20 +747,20 @@ void NativeAppWindowGtk::UpdateShelfMenu() { |
NOTIMPLEMENTED(); |
} |
-gfx::Size NativeAppWindowGtk::GetMinimumSize() const { |
+gfx::Size NativeAppWindowGtk::GetContentMinimumSize() const { |
return size_constraints_.GetMinimumSize(); |
} |
-void NativeAppWindowGtk::SetMinimumSize(const gfx::Size& size) { |
+void NativeAppWindowGtk::SetContentMinimumSize(const gfx::Size& size) { |
size_constraints_.set_minimum_size(size); |
- UpdateWindowMinMaxSize(); |
+ UpdateContentMinMaxSize(); |
} |
-gfx::Size NativeAppWindowGtk::GetMaximumSize() const { |
+gfx::Size NativeAppWindowGtk::GetContentMaximumSize() const { |
return size_constraints_.GetMaximumSize(); |
} |
-void NativeAppWindowGtk::SetMaximumSize(const gfx::Size& size) { |
+void NativeAppWindowGtk::SetContentMaximumSize(const gfx::Size& size) { |
size_constraints_.set_maximum_size(size); |
- UpdateWindowMinMaxSize(); |
+ UpdateContentMinMaxSize(); |
} |