summaryrefslogtreecommitdiffstats
path: root/chrome/browser/app_controller_mac.mm
diff options
context:
space:
mode:
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];
}