diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-02 16:48:12 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-02 16:48:12 +0000 |
commit | 8c6c5c060f7263dfd9d442845677167976d70e68 (patch) | |
tree | 8c4ff0107f1e90ef17f32cfdcd5e3658be3c0f1c /chrome | |
parent | a861a9664fa914d1510223a8436f5ff85c2017f8 (diff) | |
download | chromium_src-8c6c5c060f7263dfd9d442845677167976d70e68.zip chromium_src-8c6c5c060f7263dfd9d442845677167976d70e68.tar.gz chromium_src-8c6c5c060f7263dfd9d442845677167976d70e68.tar.bz2 |
Remember last used prefs tab.
BUG=21440
TEST=Open prefs, select 2nd tab. close & reopen prefs window. 2nd tab should still be selected. close & reopen chrome, open prefs. 2nd tab should still be selected.
Review URL: http://codereview.chromium.org/352003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30705 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/cocoa/preferences_window_controller.h | 2 | ||||
-rw-r--r-- | chrome/browser/cocoa/preferences_window_controller.mm | 24 |
2 files changed, 22 insertions, 4 deletions
diff --git a/chrome/browser/cocoa/preferences_window_controller.h b/chrome/browser/cocoa/preferences_window_controller.h index 11e013d..f1e3fd6 100644 --- a/chrome/browser/cocoa/preferences_window_controller.h +++ b/chrome/browser/cocoa/preferences_window_controller.h @@ -38,6 +38,8 @@ class Profile; IBOutlet NSView* basicsView_; IBOutlet NSView* personalStuffView_; IBOutlet NSView* underTheHoodView_; + // The last page the user was on when they opened the Options window. + IntegerPrefMember lastSelectedPage_; // Having two animations around is bad (they fight), so just use one. scoped_nsobject<NSViewAnimation> animation_; diff --git a/chrome/browser/cocoa/preferences_window_controller.mm b/chrome/browser/cocoa/preferences_window_controller.mm index 48f4b9b..e3243f4 100644 --- a/chrome/browser/cocoa/preferences_window_controller.mm +++ b/chrome/browser/cocoa/preferences_window_controller.mm @@ -21,6 +21,7 @@ #include "chrome/browser/metrics/user_metrics.h" #include "chrome/browser/net/dns_global.h" #include "chrome/browser/net/url_fixer_upper.h" +#include "chrome/browser/options_window.h" #include "chrome/browser/profile.h" #include "chrome/browser/safe_browsing/safe_browsing_service.h" #include "chrome/browser/session_startup_pref.h" @@ -207,11 +208,15 @@ class PrefObserverBridge : public NotificationObserver { CenterViewForWidth(personalStuffView_, widest); CenterViewForWidth(underTheHoodView_, widest); - // Ensure the "basics" is selected. - // TODO: change this to remember what's selected in a preference and restore - // it. + // Get the last visited page from local state. + OptionsPage page = static_cast<OptionsPage>(lastSelectedPage_.GetValue()); + if (page == OPTIONS_PAGE_DEFAULT) + page = OPTIONS_PAGE_GENERAL; - NSToolbarItem* firstItem = [[toolbar_ items] objectAtIndex:0]; + NSUInteger pageIndex = (NSUInteger)page; + if (pageIndex >= [[toolbar_ items] count]) + pageIndex = 0; + NSToolbarItem* firstItem = [[toolbar_ items] objectAtIndex:pageIndex]; [self displayPreferenceViewForToolbarItem:firstItem animate:NO]; [toolbar_ setSelectedItemIdentifier:[firstItem itemIdentifier]]; @@ -275,6 +280,9 @@ class PrefObserverBridge : public NotificationObserver { defaultDownloadLocation_.Init(prefs::kDownloadDefaultDirectory, prefs_, observer_.get()); askForSaveLocation_.Init(prefs::kPromptForDownload, prefs_, observer_.get()); + + // We don't need to observe changes in this value. + lastSelectedPage_.Init(prefs::kOptionsWindowLastTabIndex, local, NULL); } // Clean up what was registered in -registerPrefObservers. We only have to @@ -851,16 +859,20 @@ const int kDisabledIndex = 1; - (void)displayPreferenceViewForToolbarItem:(NSToolbarItem*)toolbarItem animate:(BOOL)animate { NSView* prefsView = NULL; + OptionsPage page = OPTIONS_PAGE_DEFAULT; // Tags are set in the nib file. switch ([toolbarItem tag]) { case 0: // Basics prefsView = basicsView_; + page = OPTIONS_PAGE_GENERAL; break; case 1: // Personal Stuff prefsView = personalStuffView_; + page = OPTIONS_PAGE_CONTENT; break; case 2: // Under the Hood prefsView = underTheHoodView_; + page = OPTIONS_PAGE_ADVANCED; break; default: NOTIMPLEMENTED(); @@ -883,6 +895,10 @@ const int kDisabledIndex = 1; return; } + // Remember new options page as current page. + if (page != OPTIONS_PAGE_DEFAULT) + lastSelectedPage_.SetValue(page); + // Stop any running animation, and remove any past views that were on the way // out. [animation_ stopAnimation]; |