Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(750)

Unified Diff: chrome/browser/ui/cocoa/translate/translate_infobar_base.mm

Issue 7981045: Make infobars ignore button clicks when closing. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/translate/translate_infobar_base.mm
===================================================================
--- chrome/browser/ui/cocoa/translate/translate_infobar_base.mm (revision 103307)
+++ chrome/browser/ui/cocoa/translate/translate_infobar_base.mm (working copy)
@@ -108,26 +108,6 @@
} // namespace TranslateInfoBarUtilities
-namespace {
-
-// Helper to close and disable popup menus when the infobar closes.
-// Disabling the popup button would cause a distracting visual change.
-void DisablePopUpMenu(NSMenu *menu) {
- // Remove the menu if visible.
- [menu cancelTracking];
-
- // If the menu is re-opened, prevent queries to update items.
- [menu setDelegate:nil];
-
- // Prevent target/action messages to the controller.
- for (NSMenuItem* item in [menu itemArray]) {
- [item setEnabled:NO];
- [item setTarget:nil];
- }
-}
-
-} // namespace
-
// TranslateInfoBarDelegate views specific method:
InfoBar* TranslateInfoBarDelegate::CreateInfoBar(TabContentsWrapper* owner) {
TranslateInfoBarControllerBase* infobar_controller = NULL;
@@ -492,9 +472,9 @@
}
- (void)infobarWillClose {
- DisablePopUpMenu([fromLanguagePopUp_ menu]);
- DisablePopUpMenu([toLanguagePopUp_ menu]);
- DisablePopUpMenu([optionsPopUp_ menu]);
+ [self disablePopUpMenu:[fromLanguagePopUp_ menu]];
+ [self disablePopUpMenu:[toLanguagePopUp_ menu]];
+ [self disablePopUpMenu:[optionsPopUp_ menu]];
[super infobarWillClose];
}
@@ -520,47 +500,42 @@
// Called when "Translate" button is clicked.
- (IBAction)ok:(id)sender {
- // The delegate may be NULL if the infobar was closed.
+ if (![self isOwned])
+ return;
TranslateInfoBarDelegate* delegate = [self delegate];
- if (delegate) {
- TranslateInfoBarDelegate::Type state = delegate->type();
- DCHECK(state == TranslateInfoBarDelegate::BEFORE_TRANSLATE ||
- state == TranslateInfoBarDelegate::TRANSLATION_ERROR);
- delegate->Translate();
- }
+ TranslateInfoBarDelegate::Type state = delegate->type();
+ DCHECK(state == TranslateInfoBarDelegate::BEFORE_TRANSLATE ||
+ state == TranslateInfoBarDelegate::TRANSLATION_ERROR);
+ delegate->Translate();
UMA_HISTOGRAM_COUNTS("Translate.Translate", 1);
}
// Called when someone clicks on the "Nope" button.
- (IBAction)cancel:(id)sender {
- // The delegate may be NULL if the infobar was closed.
+ if (![self isOwned])
+ return;
TranslateInfoBarDelegate* delegate = [self delegate];
- if (delegate) {
- DCHECK(delegate->type() == TranslateInfoBarDelegate::BEFORE_TRANSLATE);
- delegate->TranslationDeclined();
- UMA_HISTOGRAM_COUNTS("Translate.DeclineTranslate", 1);
- }
- [super dismiss:nil];
+ DCHECK(delegate->type() == TranslateInfoBarDelegate::BEFORE_TRANSLATE);
+ delegate->TranslationDeclined();
+ UMA_HISTOGRAM_COUNTS("Translate.DeclineTranslate", 1);
+ [super removeSelf];
}
- (void)messageButtonPressed:(id)sender {
- // The delegate may be NULL if the infobar was closed.
- TranslateInfoBarDelegate* delegate = [self delegate];
- if (delegate)
- delegate->MessageInfoBarButtonPressed();
+ if (![self isOwned])
+ return;
+ [self delegate]->MessageInfoBarButtonPressed();
}
- (IBAction)showOriginal:(id)sender {
- // The delegate may be NULL if the infobar was closed.
- TranslateInfoBarDelegate* delegate = [self delegate];
- if (delegate)
- delegate->RevertTranslation();
+ if (![self isOwned])
+ return;
+ [self delegate]->RevertTranslation();
}
// Called when any of the language drop down menus are changed.
- (void)languageMenuChanged:(id)item {
- // The delegate may be NULL if the infobar was closed.
- if (![self delegate])
+ if (![self isOwned])
return;
if ([item respondsToSelector:@selector(tag)]) {
int cmd = [item tag];
@@ -579,6 +554,8 @@
// Called when the options menu is changed.
- (void)optionsMenuChanged:(id)item {
+ if (![self isOwned])
+ return;
if ([item respondsToSelector:@selector(tag)]) {
int cmd = [item tag];
// Danger Will Robinson! : This call can release the infobar (e.g. invoking

Powered by Google App Engine
This is Rietveld 408576698