diff options
author | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-12 00:49:20 +0000 |
---|---|---|
committer | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-12 00:49:20 +0000 |
commit | ff86264a8d78a11c821492e3f5f8798f2426593d (patch) | |
tree | 9c82ecb34c22931fd75a456074f90b4eab2bf5db /chrome/browser/cocoa | |
parent | 727079c951951b16c012788ac91e85fde2920c2c (diff) | |
download | chromium_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.mm | 12 |
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]; } |