Index: chrome/browser/ui/views/translate/translate_bubble_view.cc |
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc |
index d7abc93b74bf54da6fb0a85375abfe63654d06ee..2014da059f78113461618538511a3d2d761d9205 100644 |
--- a/chrome/browser/ui/views/translate/translate_bubble_view.cc |
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc |
@@ -81,8 +81,6 @@ void GetTranslateLanguages(content::WebContents* web_contents, |
*target = TranslateManager::GetTargetLanguage(prefs); |
} |
-// TODO(hajimehoshi): The interface to offer denial choices should be another |
-// control instead of Combobox. See crbug/305494. |
class TranslateDenialComboboxModel : public ui::ComboboxModel { |
public: |
enum { |
@@ -282,6 +280,32 @@ void TranslateBubbleView::OnSelectedIndexChanged(views::Combobox* combobox) { |
HandleComboboxSelectedIndexChanged(static_cast<ComboboxID>(combobox->id())); |
} |
+void TranslateBubbleView::OnComboboxTextButtonClicked( |
+ views::Combobox* combobox) { |
+ if (combobox != denial_combobox_) |
+ return; |
+ |
+ int index = combobox->selected_index(); |
+ switch (index) { |
+ case TranslateDenialComboboxModel::INDEX_NOPE: |
+ if (!translate_executed_) |
+ model_->TranslationDeclined(); |
+ StartFade(false); |
+ break; |
+ case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE: |
+ model_->SetNeverTranslateLanguage(true); |
+ StartFade(false); |
+ break; |
+ case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE: |
+ model_->SetNeverTranslateSite(true); |
+ StartFade(false); |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+} |
+ |
void TranslateBubbleView::LinkClicked(views::Link* source, int event_flags) { |
HandleLinkClicked(static_cast<LinkID>(source->id())); |
} |
@@ -416,25 +440,7 @@ void TranslateBubbleView::HandleComboboxSelectedIndexChanged( |
TranslateBubbleView::ComboboxID sender_id) { |
switch (sender_id) { |
case COMBOBOX_ID_DENIAL: { |
- int index = denial_combobox_->selected_index(); |
- switch (index) { |
- case TranslateDenialComboboxModel::INDEX_NOPE: |
- if (!translate_executed_) |
- model_->TranslationDeclined(); |
- StartFade(false); |
- break; |
- case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE: |
- model_->SetNeverTranslateLanguage(true); |
- StartFade(false); |
- break; |
- case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE: |
- model_->SetNeverTranslateSite(true); |
- StartFade(false); |
- break; |
- default: |
- NOTREACHED(); |
- break; |
- } |
+ // do nothing |
break; |
} |
case COMBOBOX_ID_SOURCE_LANGUAGE: { |
@@ -477,6 +483,7 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() { |
new TranslateDenialComboboxModel(original_language_name)); |
denial_combobox_->set_id(COMBOBOX_ID_DENIAL); |
denial_combobox_->set_listener(this); |
+ denial_combobox_->SetStyle(views::Combobox::STYLE_NOTIFY_ON_CLICK); |
views::View* view = new views::View(); |
views::GridLayout* layout = new views::GridLayout(view); |