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

Side by Side Diff: chrome/browser/ui/gtk/infobars/translate_infobar_base_gtk.cc

Issue 7981045: Make infobars ignore button clicks when closing. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 years, 3 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/gtk/infobars/translate_infobar_base_gtk.h" 5 #include "chrome/browser/ui/gtk/infobars/translate_infobar_base_gtk.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/translate/options_menu_model.h" 8 #include "chrome/browser/translate/options_menu_model.h"
9 #include "chrome/browser/translate/translate_infobar_delegate.h" 9 #include "chrome/browser/translate/translate_infobar_delegate.h"
10 #include "chrome/browser/ui/gtk/gtk_util.h" 10 #include "chrome/browser/ui/gtk/gtk_util.h"
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 202
203 GtkWidget* arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE); 203 GtkWidget* arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE);
204 gtk_box_pack_start(GTK_BOX(hbox), arrow, FALSE, FALSE, 0); 204 gtk_box_pack_start(GTK_BOX(hbox), arrow, FALSE, FALSE, 0);
205 205
206 gtk_container_add(GTK_CONTAINER(button), hbox); 206 gtk_container_add(GTK_CONTAINER(button), hbox);
207 207
208 return button; 208 return button;
209 } 209 }
210 210
211 void TranslateInfoBarBase::OnOptionsClicked(GtkWidget* sender) { 211 void TranslateInfoBarBase::OnOptionsClicked(GtkWidget* sender) {
212 if (!owned())
213 return; // We're closing; don't call anything, it might access the owner.
212 if (!options_menu_model_.get()) { 214 if (!options_menu_model_.get()) {
213 options_menu_model_.reset(new OptionsMenuModel(GetDelegate())); 215 options_menu_model_.reset(new OptionsMenuModel(GetDelegate()));
214 options_menu_menu_.reset(new MenuGtk(NULL, options_menu_model_.get())); 216 options_menu_menu_.reset(new MenuGtk(NULL, options_menu_model_.get()));
215 } 217 }
216 options_menu_menu_->PopupForWidget(sender, 1, gtk_get_current_event_time()); 218 options_menu_menu_->PopupForWidget(sender, 1, gtk_get_current_event_time());
217 } 219 }
218 220
219 // TranslateInfoBarDelegate specific method: 221 // TranslateInfoBarDelegate specific method:
220 InfoBar* TranslateInfoBarDelegate::CreateInfoBar(TabContentsWrapper* owner) { 222 InfoBar* TranslateInfoBarDelegate::CreateInfoBar(TabContentsWrapper* owner) {
221 TranslateInfoBarBase* infobar = NULL; 223 TranslateInfoBarBase* infobar = NULL;
222 switch (type_) { 224 switch (type_) {
223 case BEFORE_TRANSLATE: 225 case BEFORE_TRANSLATE:
224 infobar = new BeforeTranslateInfoBar(owner, this); 226 infobar = new BeforeTranslateInfoBar(owner, this);
225 break; 227 break;
226 case AFTER_TRANSLATE: 228 case AFTER_TRANSLATE:
227 infobar = new AfterTranslateInfoBar(owner, this); 229 infobar = new AfterTranslateInfoBar(owner, this);
228 break; 230 break;
229 case TRANSLATING: 231 case TRANSLATING:
230 case TRANSLATION_ERROR: 232 case TRANSLATION_ERROR:
231 infobar = new TranslateMessageInfoBar(owner, this); 233 infobar = new TranslateMessageInfoBar(owner, this);
232 break; 234 break;
233 default: 235 default:
234 NOTREACHED(); 236 NOTREACHED();
235 } 237 }
236 infobar->Init(); 238 infobar->Init();
237 return infobar; 239 return infobar;
238 } 240 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698