Index: chrome/browser/ui/window_sizer/window_sizer.cc |
diff --git a/chrome/browser/ui/window_sizer/window_sizer.cc b/chrome/browser/ui/window_sizer/window_sizer.cc |
index 34b342b05985c9642d5765b902271582633b2974..41a47fe81c0d7877af36daa25aa19d5cccbd1aa3 100644 |
--- a/chrome/browser/ui/window_sizer/window_sizer.cc |
+++ b/chrome/browser/ui/window_sizer/window_sizer.cc |
@@ -224,6 +224,17 @@ void WindowSizer::GetBrowserWindowBoundsAndShowState( |
sizer.DetermineWindowBoundsAndShowState(specified_bounds, |
window_bounds, |
show_state); |
+ if (*show_state == ui::SHOW_STATE_DEFAULT) { |
+ gfx::Display display = sizer.GetTargetDisplay(*window_bounds); |
+ if (*window_bounds == display.work_area()) { |
+ // A window that occupies the whole work area gets maximized. |
+ // |window_bounds| returned here become the restore bounds once the window |
+ // gets maximized after this method returns. Return a sensible default |
+ // in order to make restored state visibly different from maximized. |
+ *show_state = ui::SHOW_STATE_MAXIMIZED; |
+ sizer.GetDefaultWindowBounds(display, window_bounds); |
+ } |
+ } |
} |
/////////////////////////////////////////////////////////////////////////////// |