summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/cocoa/infobar_container_controller.mm1
-rw-r--r--chrome/browser/ui/cocoa/infobar_controller.h4
-rw-r--r--chrome/browser/ui/cocoa/infobar_controller.mm4
-rw-r--r--chrome/browser/ui/cocoa/translate/translate_infobar_base.mm5
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];