| Index: chrome/browser/browser.cc
|
| diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
|
| index 160be201679f58dcd8eaa6db81cd1bcee81cbc62..5fae3c8986f8d0a3798034c6ec68ead5f98effa3 100644
|
| --- a/chrome/browser/browser.cc
|
| +++ b/chrome/browser/browser.cc
|
| @@ -1831,6 +1831,18 @@ void Browser::AddNewContents(TabContents* source,
|
| initial_pos, user_gesture);
|
| browser->window()->Show();
|
| } else if (disposition != SUPPRESS_OPEN) {
|
| + // Ensure that the new TabContentsView begins at the same size as the
|
| + // previous TabContentsView if it existed. Otherwise, the initial WebKit
|
| + // layout will be performed based on a width of 0 pixels, causing a
|
| + // very long, narrow, inaccurate layout. Because some scripts on pages (as
|
| + // well as WebKit's anchor link location calculation) are run on the
|
| + // initial layout and not recalculated later, we need to ensure the first
|
| + // layout is performed with sane view dimensions even when we're opening a
|
| + // new background tab.
|
| + if (TabContents* old_contents = tabstrip_model_.GetSelectedTabContents()) {
|
| + new_contents->view()->SizeContents(
|
| + old_contents->view()->GetContainerSize());
|
| + }
|
| tabstrip_model_.AddTabContents(new_contents, -1, false,
|
| PageTransition::LINK,
|
| disposition == NEW_FOREGROUND_TAB);
|
|
|