diff options
4 files changed, 14 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/infobar_container_controller.mm b/chrome/browser/ui/cocoa/infobar_container_controller.mm index 3eb29dc..1d26e12 100644 --- a/chrome/browser/ui/cocoa/infobar_container_controller.mm +++ b/chrome/browser/ui/cocoa/infobar_container_controller.mm @@ -182,6 +182,7 @@ class InfoBarNotificationObserver : public NotificationObserver { for (InfoBarController* controller in [NSArray arrayWithArray:infobarControllers_.get()]) { if ([controller delegate] == delegate) { + [controller infobarWillClose]; if (animate) [controller animateClosed]; else diff --git a/chrome/browser/ui/cocoa/infobar_controller.h b/chrome/browser/ui/cocoa/infobar_controller.h index e13d211..f0b735e 100644 --- a/chrome/browser/ui/cocoa/infobar_controller.h +++ b/chrome/browser/ui/cocoa/infobar_controller.h @@ -70,6 +70,10 @@ class InfoBarDelegate; // default implementation does nothing. - (void)addAdditionalControls; +// Subclasses must override this method to perform cleanup just before the +// infobar closes. +- (void)infobarWillClose; + // Sets the info bar message to the specified |message|. - (void)setLabelToMessage:(NSString*)message; diff --git a/chrome/browser/ui/cocoa/infobar_controller.mm b/chrome/browser/ui/cocoa/infobar_controller.mm index 432c00b..2d7f576 100644 --- a/chrome/browser/ui/cocoa/infobar_controller.mm +++ b/chrome/browser/ui/cocoa/infobar_controller.mm @@ -197,6 +197,10 @@ const float kAnimateCloseDuration = 0.12; // Default implementation does nothing. } +- (void)infobarWillClose { + // Default implementation does nothing. +} + - (void)setLabelToMessage:(NSString*)message { NSMutableDictionary* attributes = [NSMutableDictionary dictionary]; NSFont* font = [NSFont labelFontOfSize: diff --git a/chrome/browser/ui/cocoa/translate/translate_infobar_base.mm b/chrome/browser/ui/cocoa/translate/translate_infobar_base.mm index a91cd11..9408aee 100644 --- a/chrome/browser/ui/cocoa/translate/translate_infobar_base.mm +++ b/chrome/browser/ui/cocoa/translate/translate_infobar_base.mm @@ -473,6 +473,11 @@ InfoBar* TranslateInfoBarDelegate::CreateInfoBar() { [self updateState]; } +- (void)infobarWillClose { + [[optionsPopUp_ menu] cancelTracking]; + [super infobarWillClose]; +} + - (void)adjustOptionsButtonSizeAndVisibilityForView:(NSView*)lastView { [optionsPopUp_ setHidden:NO]; [self rebuildOptionsMenu:NO]; |