summaryrefslogtreecommitdiffstats
path: root/chrome/browser/app_controller_mac.mm
diff options
context:
space:
mode:
authorpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-30 19:23:58 +0000
committerpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-30 19:23:58 +0000
commit767543dfe21880d26ea805ab6eaf4147ac4c2351 (patch)
treeda880cc189e8cca09cb89e0f5c0329f462f5d85a /chrome/browser/app_controller_mac.mm
parent1aba390ce0ae355c82a3eb0e468926ad29e27484 (diff)
downloadchromium_src-767543dfe21880d26ea805ab6eaf4147ac4c2351.zip
chromium_src-767543dfe21880d26ea805ab6eaf4147ac4c2351.tar.gz
chromium_src-767543dfe21880d26ea805ab6eaf4147ac4c2351.tar.bz2
Add notification (and unit test) for closing prefs window so it can be cleaned up properly in the app controller. Make the prefs window controller the window's delegate so it gets close notifications.
Review URL: http://codereview.chromium.org/99238 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14967 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/app_controller_mac.mm')
-rw-r--r--chrome/browser/app_controller_mac.mm14
1 files changed, 14 insertions, 0 deletions
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm
index 082d0f5..a75c0e5 100644
--- a/chrome/browser/app_controller_mac.mm
+++ b/chrome/browser/app_controller_mac.mm
@@ -232,6 +232,13 @@ void OpenURLs(const std::vector<GURL>& urls) {
OpenURLs(gurlVector);
}
+// Called when the preferences window is closed. We use this to release the
+// window controller.
+- (void)prefsWindowClosed:(NSNotification*)notify {
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+ prefsController_.reset(NULL);
+}
+
// Show the preferences window, or bring it to the front if it's already
// visible.
- (IBAction)showPreferences:(id)sender {
@@ -239,6 +246,13 @@ void OpenURLs(const std::vector<GURL>& urls) {
PrefService* prefs = [self defaultProfile]->GetPrefs();
prefsController_.reset([[PreferencesWindowController alloc]
initWithPrefs:prefs]);
+ // Watch for a notification of when it goes away so that we can destroy
+ // the controller.
+ [[NSNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(prefsWindowClosed:)
+ name:kUserDoneEditingPrefsNotification
+ object:prefsController_.get()];
}
[prefsController_ showPreferences:sender];
}