| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/views/infobars/after_translate_infobar.h" | 5 #include "chrome/browser/views/infobars/after_translate_infobar.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "chrome/browser/translate/options_menu_model.h" | 9 #include "chrome/browser/translate/options_menu_model.h" |
| 10 #include "chrome/browser/translate/translate_infobar_delegate.h" | 10 #include "chrome/browser/translate/translate_infobar_delegate.h" |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 void AfterTranslateInfoBar::OriginalLanguageChanged() { | 110 void AfterTranslateInfoBar::OriginalLanguageChanged() { |
| 111 UpdateLanguageButtonText(LanguagesMenuModel::ORIGINAL); | 111 UpdateLanguageButtonText(LanguagesMenuModel::ORIGINAL); |
| 112 } | 112 } |
| 113 | 113 |
| 114 void AfterTranslateInfoBar::TargetLanguageChanged() { | 114 void AfterTranslateInfoBar::TargetLanguageChanged() { |
| 115 UpdateLanguageButtonText(LanguagesMenuModel::TARGET); | 115 UpdateLanguageButtonText(LanguagesMenuModel::TARGET); |
| 116 } | 116 } |
| 117 | 117 |
| 118 void AfterTranslateInfoBar::ButtonPressed(views::Button* sender, | 118 void AfterTranslateInfoBar::ButtonPressed(views::Button* sender, |
| 119 const views::Event& event) { | 119 const views::Event& event) { |
| 120 if (sender == revert_button_) { | 120 if (delegate() && (sender == revert_button_)) { |
| 121 GetDelegate()->RevertTranslation(); | 121 GetDelegate()->RevertTranslation(); |
| 122 return; | 122 return; |
| 123 } | 123 } |
| 124 |
| 124 TranslateInfoBarBase::ButtonPressed(sender, event); | 125 TranslateInfoBarBase::ButtonPressed(sender, event); |
| 125 } | 126 } |
| 126 | 127 |
| 127 void AfterTranslateInfoBar::RunMenu(views::View* source, | 128 void AfterTranslateInfoBar::RunMenu(views::View* source, |
| 128 const gfx::Point& pt) { | 129 const gfx::Point& pt) { |
| 130 if (!delegate()) |
| 131 return; |
| 132 // TODO(pkasting): What if the InfoBarDelegate is closed while the menu is |
| 133 // open? Then the menu models may deref garbage delegate pointers. |
| 134 |
| 129 if (source == original_language_menu_button_) { | 135 if (source == original_language_menu_button_) { |
| 130 if (!original_language_menu_.get()) { | 136 if (!original_language_menu_.get()) { |
| 131 original_language_menu_.reset( | 137 original_language_menu_.reset( |
| 132 new views::Menu2(&original_language_menu_model_)); | 138 new views::Menu2(&original_language_menu_model_)); |
| 133 } | 139 } |
| 134 original_language_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); | 140 original_language_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); |
| 135 } else if (source == target_language_menu_button_) { | 141 } else if (source == target_language_menu_button_) { |
| 136 if (!target_language_menu_.get()) { | 142 if (!target_language_menu_.get()) { |
| 137 target_language_menu_.reset( | 143 target_language_menu_.reset( |
| 138 new views::Menu2(&target_language_menu_model_)); | 144 new views::Menu2(&target_language_menu_model_)); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 160 } | 166 } |
| 161 string16 language = | 167 string16 language = |
| 162 GetDelegate()->GetLanguageDisplayableNameAt(language_index); | 168 GetDelegate()->GetLanguageDisplayableNameAt(language_index); |
| 163 language_button->SetText(UTF16ToWideHack(language)); | 169 language_button->SetText(UTF16ToWideHack(language)); |
| 164 // The following line is necessary for the preferred size to be recomputed. | 170 // The following line is necessary for the preferred size to be recomputed. |
| 165 language_button->ClearMaxTextSize(); | 171 language_button->ClearMaxTextSize(); |
| 166 // The button may have to grow to show the new text. | 172 // The button may have to grow to show the new text. |
| 167 Layout(); | 173 Layout(); |
| 168 SchedulePaint(); | 174 SchedulePaint(); |
| 169 } | 175 } |
| OLD | NEW |