| OLD | NEW |
| 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 Loading... |
| 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 } |
| OLD | NEW |