| 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
|
|
|