diff options
-rw-r--r-- | chrome/browser/translate/translate_infobars_delegates.cc | 3 | ||||
-rw-r--r-- | chrome/browser/translate/translate_infobars_delegates.h | 6 | ||||
-rw-r--r-- | chrome/browser/views/infobars/translate_infobars.cc | 15 |
3 files changed, 17 insertions, 7 deletions
diff --git a/chrome/browser/translate/translate_infobars_delegates.cc b/chrome/browser/translate/translate_infobars_delegates.cc index 3dba0ca..7bf2a4f 100644 --- a/chrome/browser/translate/translate_infobars_delegates.cc +++ b/chrome/browser/translate/translate_infobars_delegates.cc @@ -53,7 +53,8 @@ void TranslateInfoBarDelegate::GetAvailableTargetLanguages( } void TranslateInfoBarDelegate::Translate() { - tab_contents_->TranslatePage(original_lang_code(), target_lang_code()); + if (original_lang_index_ != target_lang_index_) + tab_contents_->TranslatePage(original_lang_code(), target_lang_code()); } bool TranslateInfoBarDelegate::IsLanguageBlacklisted() { diff --git a/chrome/browser/translate/translate_infobars_delegates.h b/chrome/browser/translate/translate_infobars_delegates.h index 18416c4..5b10f3f 100644 --- a/chrome/browser/translate/translate_infobars_delegates.h +++ b/chrome/browser/translate/translate_infobars_delegates.h @@ -28,6 +28,12 @@ class TranslateInfoBarDelegate : public InfoBarDelegate { virtual bool ShouldAlwaysTranslate(); virtual void ToggleAlwaysTranslate(); + int original_lang_index() const { + return original_lang_index_; + } + int target_lang_index() const { + return target_lang_index_; + } const std::string& original_lang_code() const { return supported_languages_[original_lang_index_]; } diff --git a/chrome/browser/views/infobars/translate_infobars.cc b/chrome/browser/views/infobars/translate_infobars.cc index c65bea4..d20d844 100644 --- a/chrome/browser/views/infobars/translate_infobars.cc +++ b/chrome/browser/views/infobars/translate_infobars.cc @@ -455,15 +455,18 @@ gfx::Point TranslateInfoBar::DetermineMenuPositionAndAlignment( void TranslateInfoBar::OnLanguageModified(views::MenuButton* menu_button, int new_language_index) { // Only proceed if a different language has been selected. - string16 new_language = TranslateInfoBarDelegate::GetDisplayNameForLocale( - GetDelegate()->GetLocaleFromIndex(new_language_index)); - if (new_language == WideToUTF16(menu_button->text())) - return; - if (menu_button == original_language_menu_button_) + if (menu_button == original_language_menu_button_) { + if (new_language_index == GetDelegate()->original_lang_index()) + return; GetDelegate()->ModifyOriginalLanguage(new_language_index); - else + } else { + if (new_language_index == GetDelegate()->target_lang_index()) + return; GetDelegate()->ModifyTargetLanguage(new_language_index); + } + string16 new_language = TranslateInfoBarDelegate::GetDisplayNameForLocale( + GetDelegate()->GetLocaleFromIndex(new_language_index)); menu_button->SetText(UTF16ToWideHack(new_language)); menu_button->ClearMaxTextSize(); menu_button->SizeToPreferredSize(); |