diff options
Diffstat (limited to 'chrome/browser/app_controller_mac.mm')
-rw-r--r-- | chrome/browser/app_controller_mac.mm | 14 |
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]; } |