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

Side by Side Diff: chrome/browser/ui/gtk/infobars/after_translate_infobar_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/after_translate_infobar_gtk.h" 5 #include "chrome/browser/ui/gtk/infobars/after_translate_infobar_gtk.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 FALSE, FALSE, 0); 55 FALSE, FALSE, 0);
56 gtk_box_pack_start(GTK_BOX(hbox), 56 gtk_box_pack_start(GTK_BOX(hbox),
57 swapped_language_combos ? original_lang_combo : 57 swapped_language_combos ? original_lang_combo :
58 target_lang_combo, 58 target_lang_combo,
59 FALSE, FALSE, 0); 59 FALSE, FALSE, 0);
60 gtk_box_pack_start(GTK_BOX(hbox), CreateLabel(UTF16ToUTF8(strings[2])), 60 gtk_box_pack_start(GTK_BOX(hbox), CreateLabel(UTF16ToUTF8(strings[2])),
61 FALSE, FALSE, 0); 61 FALSE, FALSE, 0);
62 62
63 GtkWidget* button = gtk_button_new_with_label( 63 GtkWidget* button = gtk_button_new_with_label(
64 l10n_util::GetStringUTF8(IDS_TRANSLATE_INFOBAR_REVERT).c_str()); 64 l10n_util::GetStringUTF8(IDS_TRANSLATE_INFOBAR_REVERT).c_str());
65 g_signal_connect(button, "clicked",G_CALLBACK(&OnRevertPressedThunk), this); 65 g_signal_connect(button, "clicked", G_CALLBACK(&OnRevertPressedThunk), this);
66 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 66 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
67 } 67 }
68 68
69 bool AfterTranslateInfoBar::ShowOptionsMenuButton() const { 69 bool AfterTranslateInfoBar::ShowOptionsMenuButton() const {
70 return true; 70 return true;
71 } 71 }
72 72
73 void AfterTranslateInfoBar::OnOriginalLanguageModified(GtkWidget* sender) { 73 void AfterTranslateInfoBar::OnOriginalLanguageModified(GtkWidget* sender) {
74 if (!owned())
75 return; // We're closing; don't call anything, it might access the owner.
74 size_t index = GetLanguageComboboxActiveId(GTK_COMBO_BOX(sender)); 76 size_t index = GetLanguageComboboxActiveId(GTK_COMBO_BOX(sender));
75 if (index == GetDelegate()->original_language_index()) 77 if (index == GetDelegate()->original_language_index())
76 return; 78 return;
77 79
78 // Setting the language will lead to a new translation that is going to close 80 // Setting the language will lead to a new translation that is going to close
79 // the infobar. This is not OK to do this from the signal handler, so we'll 81 // the infobar. This is not OK to do this from the signal handler, so we'll
80 // defer it. 82 // defer it.
81 MessageLoop::current()->PostTask(FROM_HERE, method_factory_.NewRunnableMethod( 83 MessageLoop::current()->PostTask(FROM_HERE, method_factory_.NewRunnableMethod(
82 &AfterTranslateInfoBar::SetOriginalLanguage, index)); 84 &AfterTranslateInfoBar::SetOriginalLanguage, index));
83 } 85 }
84 86
85 void AfterTranslateInfoBar::OnTargetLanguageModified(GtkWidget* sender) { 87 void AfterTranslateInfoBar::OnTargetLanguageModified(GtkWidget* sender) {
88 if (!owned())
89 return; // We're closing; don't call anything, it might access the owner.
86 size_t index = GetLanguageComboboxActiveId(GTK_COMBO_BOX(sender)); 90 size_t index = GetLanguageComboboxActiveId(GTK_COMBO_BOX(sender));
87 if (index == GetDelegate()->target_language_index()) 91 if (index == GetDelegate()->target_language_index())
88 return; 92 return;
89 93
90 // See comment in OnOriginalLanguageModified on why we use a task. 94 // See comment in OnOriginalLanguageModified on why we use a task.
91 MessageLoop::current()->PostTask(FROM_HERE, method_factory_.NewRunnableMethod( 95 MessageLoop::current()->PostTask(FROM_HERE, method_factory_.NewRunnableMethod(
92 &AfterTranslateInfoBar::SetTargetLanguage, index)); 96 &AfterTranslateInfoBar::SetTargetLanguage, index));
93 } 97 }
94 98
95 void AfterTranslateInfoBar::OnRevertPressed(GtkWidget* sender) { 99 void AfterTranslateInfoBar::OnRevertPressed(GtkWidget* sender) {
100 if (!owned())
101 return; // We're closing; don't call anything, it might access the owner.
96 GetDelegate()->RevertTranslation(); 102 GetDelegate()->RevertTranslation();
97 } 103 }
98 104
99 void AfterTranslateInfoBar::SetOriginalLanguage(size_t language_index) { 105 void AfterTranslateInfoBar::SetOriginalLanguage(size_t language_index) {
106 if (!owned())
107 return; // We're closing; don't call anything, it might access the owner.
100 GetDelegate()->SetOriginalLanguage(language_index); 108 GetDelegate()->SetOriginalLanguage(language_index);
101 } 109 }
102 110
103 void AfterTranslateInfoBar::SetTargetLanguage(size_t language_index) { 111 void AfterTranslateInfoBar::SetTargetLanguage(size_t language_index) {
112 if (!owned())
113 return; // We're closing; don't call anything, it might access the owner.
104 GetDelegate()->SetTargetLanguage(language_index); 114 GetDelegate()->SetTargetLanguage(language_index);
105 } 115 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698