summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-02 16:48:12 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-02 16:48:12 +0000
commit8c6c5c060f7263dfd9d442845677167976d70e68 (patch)
tree8c4ff0107f1e90ef17f32cfdcd5e3658be3c0f1c /chrome
parenta861a9664fa914d1510223a8436f5ff85c2017f8 (diff)
downloadchromium_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.h2
-rw-r--r--chrome/browser/cocoa/preferences_window_controller.mm24
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];