summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browser.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-30 15:05:10 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-30 15:05:10 +0000
commitb9c505bc4409b403aab2c67f016fbe4b01ad1509 (patch)
tree53a8b85ad11418306336d88dab1c42402b47bfd8 /chrome/browser/browser.cc
parent298883bc55dec7bbcb59897b919d9e07691d0da9 (diff)
downloadchromium_src-b9c505bc4409b403aab2c67f016fbe4b01ad1509.zip
chromium_src-b9c505bc4409b403aab2c67f016fbe4b01ad1509.tar.gz
chromium_src-b9c505bc4409b403aab2c67f016fbe4b01ad1509.tar.bz2
Attempt 2 at relanding your patch. I believe the problem was the removal of the observer in ~TabStrip. By the time TabStrip's destructor was run the model's destructor had already run. I've changed BrowserView to explicitly delete the TabStrip before the browser. See the change between v1 and v2 of this patch in BrowserView for the relevant part.
BUG=none TEST=none TBR=ben@chromium.org Review URL: http://codereview.chromium.org/1817001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46071 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser.cc')
-rw-r--r--chrome/browser/browser.cc26
1 files changed, 25 insertions, 1 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index 7965c48..43e1e61 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -68,6 +68,7 @@
#include "chrome/browser/tab_contents/navigation_entry.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tab_contents/tab_contents_view.h"
+#include "chrome/browser/tab_menu_model.h"
#include "chrome/browser/web_applications/web_app.h"
#include "chrome/browser/window_sizer.h"
#include "chrome/common/chrome_constants.h"
@@ -201,6 +202,12 @@ Browser::Browser(Type type, Profile* profile)
encoding_auto_detect_.Init(prefs::kWebKitUsesUniversalDetector,
profile_->GetPrefs(), NULL);
+ use_vertical_tabs_.Init(prefs::kUseVerticalTabs, profile_->GetPrefs(), this);
+ if (!TabMenuModel::AreVerticalTabsEnabled()) {
+ // If vertical tabs aren't enabled, explicitly turn them off. Otherwise we
+ // might show vertical tabs but not show an option to turn them off.
+ use_vertical_tabs_.SetValue(false);
+ }
}
Browser::~Browser() {
@@ -1699,7 +1706,7 @@ void Browser::RegisterUserPrefs(PrefService* prefs) {
prefs->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true);
prefs->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
prefs->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
- prefs->RegisterBooleanPref(prefs::kUseVerticalTabs, true);
+ prefs->RegisterBooleanPref(prefs::kUseVerticalTabs, false);
prefs->RegisterBooleanPref(prefs::kEnableTranslate, true);
}
@@ -2128,6 +2135,15 @@ void Browser::BookmarkAllTabs() {
BookmarkEditor::SHOW_TREE);
}
+bool Browser::UseVerticalTabs() const {
+ return use_vertical_tabs_.GetValue();
+}
+
+void Browser::ToggleUseVerticalTabs() {
+ use_vertical_tabs_.SetValue(!UseVerticalTabs());
+ window()->ToggleTabStripMode();
+}
+
///////////////////////////////////////////////////////////////////////////////
// Browser, TabStripModelObserver implementation:
@@ -2784,6 +2800,14 @@ void Browser::Observe(NotificationType type,
break;
}
+ case NotificationType::PREF_CHANGED: {
+ if (*(Details<std::wstring>(details).ptr()) == prefs::kUseVerticalTabs)
+ window()->ToggleTabStripMode();
+ else
+ NOTREACHED();
+ break;
+ }
+
default:
NOTREACHED() << "Got a notification we didn't register for.";
}