summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/translate/translate_infobars_delegates.cc3
-rw-r--r--chrome/browser/translate/translate_infobars_delegates.h6
-rw-r--r--chrome/browser/views/infobars/translate_infobars.cc15
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();