summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser.cc9
-rw-r--r--chrome/browser/views/frame/browser_view.cc11
2 files changed, 7 insertions, 13 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index dc86bcb..6d50e66 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -2601,15 +2601,8 @@ void Browser::BuildPopupWindowHelper(TabContents* source,
browser->set_maximized_state(MAXIMIZED_STATE_UNMAXIMIZED);
browser->CreateBrowserWindow();
- // We need to Show before AddNewContents, otherwise AddNewContents will focus
- // it (via BrowserView::TabSelectedAt calling RestoreFocus), triggering any
- // onblur="" handlers.
+ browser->tabstrip_model()->AppendTabContents(new_contents, true);
browser->window()->Show();
-
- // TODO(beng): See if this can be made to use
- // TabStripModel::AppendTabContents.
- browser->AddNewContents(source, new_contents, NEW_FOREGROUND_TAB,
- gfx::Rect(), true);
}
GURL Browser::GetHomePage() const {
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index aebb183..6f1ce19 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -901,9 +901,8 @@ void BrowserView::TabSelectedAt(TabContents* old_contents,
// We do not store the focus when closing the tab to work-around bug 4633.
// Some reports seem to show that the focus manager and/or focused view can
// be garbage at that point, it is not clear why.
- if (old_contents && !old_contents->is_being_destroyed() &&
- old_contents->AsWebContents())
- old_contents->AsWebContents()->view()->StoreFocus();
+ if (old_contents && !old_contents->is_being_destroyed())
+ old_contents->view()->StoreFocus();
// Update various elements that are interested in knowing the current
// TabContents.
@@ -916,8 +915,10 @@ void BrowserView::TabSelectedAt(TabContents* old_contents,
new_contents->DidBecomeSelected();
if (BrowserList::GetLastActive() == browser_ &&
!browser_->tabstrip_model()->closing_all() &&
- new_contents->AsWebContents()) {
- new_contents->AsWebContents()->view()->RestoreFocus();
+ GetWidget()->GetWindow()->IsVisible()) {
+ // We only restore focus if our window is visible, to avoid invoking blur
+ // handlers when we are eventually shown.
+ new_contents->view()->RestoreFocus();
}
// Update all the UI bits.