Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(570)

Side by Side Diff: chrome/browser/ui/views/infobars/after_translate_infobar.cc

Issue 4767001: Make TabContents own its infobar delegates.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698