| Index: chrome/browser/gtk/browser_window_gtk.cc
 | 
| diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc
 | 
| index ae8c54793d58a70af5506e27d17d4641c84ac6bb..2ebc1cfceea73879fb17b5152a936cf21708b681 100644
 | 
| --- a/chrome/browser/gtk/browser_window_gtk.cc
 | 
| +++ b/chrome/browser/gtk/browser_window_gtk.cc
 | 
| @@ -1070,10 +1070,19 @@ void BrowserWindowGtk::SetGeometryHints() {
 | 
|      gtk_window_unmaximize(window_);
 | 
|  
 | 
|    gfx::Rect bounds = browser_->GetSavedWindowBounds();
 | 
| -  // Note that calling SetBounds() here is incorrect, as that sets a forced
 | 
| -  // position on the window and we intentionally *don't* do that.  We tested
 | 
| -  // many programs and none of them restored their position on Linux.
 | 
| -  gtk_window_resize(window_, bounds.width(), bounds.height());
 | 
| +  // We don't blindly call SetBounds here, that sets a forced position
 | 
| +  // on the window and we intentionally *don't* do that for normal
 | 
| +  // windows.  We tested many programs and none of them restored their
 | 
| +  // position on Linux.
 | 
| +  //
 | 
| +  // However, in cases like dropping a tab where the bounds are
 | 
| +  // specifically set, we do want to position explicitly.
 | 
| +  if (browser_->bounds_overridden()) {
 | 
| +    SetBounds(bounds);
 | 
| +  } else {
 | 
| +    // Ignore the position but obey the size.
 | 
| +    gtk_window_resize(window_, bounds.width(), bounds.height());
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  void BrowserWindowGtk::ConnectHandlersToSignals() {
 | 
| 
 |