summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa
diff options
context:
space:
mode:
authorjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-12 00:49:20 +0000
committerjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-12 00:49:20 +0000
commitff86264a8d78a11c821492e3f5f8798f2426593d (patch)
tree9c82ecb34c22931fd75a456074f90b4eab2bf5db /chrome/browser/cocoa
parent727079c951951b16c012788ac91e85fde2920c2c (diff)
downloadchromium_src-ff86264a8d78a11c821492e3f5f8798f2426593d.zip
chromium_src-ff86264a8d78a11c821492e3f5f8798f2426593d.tar.gz
chromium_src-ff86264a8d78a11c821492e3f5f8798f2426593d.tar.bz2
Take 2: make bubble more tolerant of notification order when quitting.
BUG=37807 TEST=\ Run a debug build of Chrome like this: NSZombieEnabled=YES xcodebuild/Debug/Chromium.app/Contents/MacOS/Chromium Open a bubble then Cmd-Q. Make sure you don't see a line like this: 2010-03-10 19:24:20.381 Chromium[73024:903] *** -[ChromeBrowserWindow removeChildWindow:]: message sent to deallocated instance 0x18f8b2a0 Repeat 20 times. Review URL: http://codereview.chromium.org/851005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41373 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa')
-rw-r--r--chrome/browser/cocoa/bookmark_bubble_controller.mm12
1 files changed, 12 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/bookmark_bubble_controller.mm b/chrome/browser/cocoa/bookmark_bubble_controller.mm
index be1fd30..7b29749 100644
--- a/chrome/browser/cocoa/bookmark_bubble_controller.mm
+++ b/chrome/browser/cocoa/bookmark_bubble_controller.mm
@@ -123,6 +123,18 @@
- (void)close {
[parentWindow_ removeChildWindow:[self window]];
+
+ // If you quit while the bubble is open, sometimes we get a
+ // DidResignKey before we get our parent's WindowWillClose and
+ // sometimes not. We protect against a multiple close (or reference
+ // to parentWindow_ at a bad time) by clearing it out once we're
+ // done, and by removing ourself from future notifications.
+ [[NSNotificationCenter defaultCenter]
+ removeObserver:self
+ name:NSWindowWillCloseNotification
+ object:parentWindow_];
+ parentWindow_ = nil;
+
[super close];
}