| Index: chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
 | 
| diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
 | 
| index e2427294378e2a7b3f9ce8959d72b524b71565d7..51984e21680cf4c40519089e04bca395c2bf1072 100644
 | 
| --- a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
 | 
| +++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
 | 
| @@ -210,8 +210,22 @@ void ChromeNativeAppWindowViews::InitializePanelWindow(
 | 
|    else if (preferred_size_.height() < kMinPanelHeight)
 | 
|      preferred_size_.set_height(kMinPanelHeight);
 | 
|  
 | 
| -  params.bounds = gfx::Rect(preferred_size_);
 | 
| +  // When a panel is not docked |initial_window_bounds|'s origin is reset to
 | 
| +  // |kUnspecifiedPosition| to trigger placing it in the currently active
 | 
| +  // target root window.
 | 
| +  typedef AppWindow::BoundsSpecification BoundsSpecification;
 | 
| +  if (create_params.state != ui::SHOW_STATE_DOCKED) {
 | 
| +    initial_window_bounds.set_origin(
 | 
| +        gfx::Point(BoundsSpecification::kUnspecifiedPosition,
 | 
| +                   BoundsSpecification::kUnspecifiedPosition));
 | 
| +  }
 | 
| +  params.bounds = gfx::Rect(initial_window_bounds.origin(), preferred_size_);
 | 
|    OnBeforePanelWidgetInit(¶ms, widget());
 | 
| +  bool position_specified =
 | 
| +      params.bounds.x() != BoundsSpecification::kUnspecifiedPosition &&
 | 
| +      params.bounds.y() != BoundsSpecification::kUnspecifiedPosition;
 | 
| +  if (!position_specified)
 | 
| +    params.bounds = gfx::Rect(preferred_size_);
 | 
|    widget()->Init(params);
 | 
|    widget()->set_focus_on_creation(create_params.focused);
 | 
|  }
 | 
| 
 |