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

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

Issue 7981045: Make infobars ignore button clicks when closing. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 months 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ui/views/infobars/before_translate_infobar.h" 5 #include "chrome/browser/ui/views/infobars/before_translate_infobar.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/translate/translate_infobar_delegate.h" 8 #include "chrome/browser/translate/translate_infobar_delegate.h"
9 #include "grit/generated_resources.h" 9 #include "grit/generated_resources.h"
10 #include "ui/base/l10n/l10n_util.h" 10 #include "ui/base/l10n/l10n_util.h"
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 (kButtonButtonSpacing + 154 (kButtonButtonSpacing +
155 never_translate_button_->GetPreferredSize().width())) + 155 never_translate_button_->GetPreferredSize().width())) +
156 ((always_translate_button_ == NULL) ? 0 : 156 ((always_translate_button_ == NULL) ? 0 :
157 (kButtonButtonSpacing + 157 (kButtonButtonSpacing +
158 always_translate_button_->GetPreferredSize().width())) + 158 always_translate_button_->GetPreferredSize().width())) +
159 (kEndOfLabelSpacing + options_menu_button_->GetPreferredSize().width()); 159 (kEndOfLabelSpacing + options_menu_button_->GetPreferredSize().width());
160 } 160 }
161 161
162 void BeforeTranslateInfoBar::ButtonPressed(views::Button* sender, 162 void BeforeTranslateInfoBar::ButtonPressed(views::Button* sender,
163 const views::Event& event) { 163 const views::Event& event) {
164 if (!owned())
165 return; // We're closing; don't call anything, it might access the owner.
164 TranslateInfoBarDelegate* delegate = GetDelegate(); 166 TranslateInfoBarDelegate* delegate = GetDelegate();
165 if (sender == accept_button_) { 167 if (sender == accept_button_) {
166 delegate->Translate(); 168 delegate->Translate();
167 } else if (sender == deny_button_) { 169 } else if (sender == deny_button_) {
168 delegate->TranslationDeclined(); 170 delegate->TranslationDeclined();
169 RemoveSelf(); 171 RemoveSelf();
170 } else if (sender == never_translate_button_) { 172 } else if (sender == never_translate_button_) {
171 delegate->NeverTranslatePageLanguage(); 173 delegate->NeverTranslatePageLanguage();
172 } else if (sender == always_translate_button_) { 174 } else if (sender == always_translate_button_) {
173 delegate->AlwaysTranslatePageLanguage(); 175 delegate->AlwaysTranslatePageLanguage();
174 } else { 176 } else {
175 TranslateInfoBarBase::ButtonPressed(sender, event); 177 TranslateInfoBarBase::ButtonPressed(sender, event);
176 } 178 }
177 } 179 }
178 180
179 void BeforeTranslateInfoBar::OriginalLanguageChanged() { 181 void BeforeTranslateInfoBar::OriginalLanguageChanged() {
180 // Tests can call this function when the infobar has never been added to a 182 // Tests can call this function when the infobar has never been added to a
181 // view hierarchy and thus there is no button. 183 // view hierarchy and thus there is no button.
182 if (language_menu_button_) { 184 if (language_menu_button_) {
183 UpdateLanguageButtonText(language_menu_button_, 185 UpdateLanguageButtonText(language_menu_button_,
184 LanguagesMenuModel::ORIGINAL); 186 LanguagesMenuModel::ORIGINAL);
185 } 187 }
186 } 188 }
187 189
188 void BeforeTranslateInfoBar::RunMenu(View* source, const gfx::Point& pt) { 190 void BeforeTranslateInfoBar::RunMenu(View* source, const gfx::Point& pt) {
191 if (!owned())
192 return; // We're closing; don't call anything, it might access the owner.
189 ui::MenuModel* menu_model = NULL; 193 ui::MenuModel* menu_model = NULL;
190 views::MenuButton* button = NULL; 194 views::MenuButton* button = NULL;
191 views::MenuItemView::AnchorPosition anchor = views::MenuItemView::TOPLEFT; 195 views::MenuItemView::AnchorPosition anchor = views::MenuItemView::TOPLEFT;
192 if (source == language_menu_button_) { 196 if (source == language_menu_button_) {
193 menu_model = &languages_menu_model_; 197 menu_model = &languages_menu_model_;
194 button = language_menu_button_; 198 button = language_menu_button_;
195 } else { 199 } else {
196 DCHECK_EQ(options_menu_button_, source); 200 DCHECK_EQ(options_menu_button_, source);
197 menu_model = &options_menu_model_; 201 menu_model = &options_menu_model_;
198 button = options_menu_button_; 202 button = options_menu_button_;
199 anchor = views::MenuItemView::TOPRIGHT; 203 anchor = views::MenuItemView::TOPRIGHT;
200 } 204 }
201 RunMenuAt(menu_model, button, anchor); 205 RunMenuAt(menu_model, button, anchor);
202 // TODO(pkasting): this may be deleted after rewrite.
203 } 206 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/infobars/after_translate_infobar.cc ('k') | chrome/browser/ui/views/infobars/confirm_infobar.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698