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/js_modal_dialog_gtk.h" | 5 #include "chrome/browser/ui/gtk/js_modal_dialog_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/message_box_flags.h" | |
11 #include "base/logging.h" | 10 #include "base/logging.h" |
12 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
13 #include "chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h" | 12 #include "chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h" |
14 #include "chrome/browser/ui/gtk/gtk_util.h" | 13 #include "chrome/browser/ui/gtk/gtk_util.h" |
15 #include "grit/generated_resources.h" | 14 #include "grit/generated_resources.h" |
16 #include "grit/locale_settings.h" | 15 #include "grit/locale_settings.h" |
| 16 #include "ui/base/message_box_flags.h" |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 // We stash pointers to widgets on the gtk_dialog so we can refer to them | 20 // We stash pointers to widgets on the gtk_dialog so we can refer to them |
21 // after dialog creation. | 21 // after dialog creation. |
22 const char kPromptTextId[] = "chrome_prompt_text"; | 22 const char kPromptTextId[] = "chrome_prompt_text"; |
23 const char kSuppressCheckboxId[] = "chrome_suppress_checkbox"; | 23 const char kSuppressCheckboxId[] = "chrome_suppress_checkbox"; |
24 | 24 |
25 // If there's a text entry in the dialog, get the text from the first one and | 25 // If there's a text entry in the dialog, get the text from the first one and |
26 // return it. | 26 // return it. |
(...skipping 22 matching lines...) Expand all Loading... |
49 | 49 |
50 JSModalDialogGtk::JSModalDialogGtk(JavaScriptAppModalDialog* dialog, | 50 JSModalDialogGtk::JSModalDialogGtk(JavaScriptAppModalDialog* dialog, |
51 gfx::NativeWindow parent_window) | 51 gfx::NativeWindow parent_window) |
52 : dialog_(dialog) { | 52 : dialog_(dialog) { |
53 GtkButtonsType buttons = GTK_BUTTONS_NONE; | 53 GtkButtonsType buttons = GTK_BUTTONS_NONE; |
54 GtkMessageType message_type = GTK_MESSAGE_OTHER; | 54 GtkMessageType message_type = GTK_MESSAGE_OTHER; |
55 | 55 |
56 // We add in the OK button manually later because we want to focus it | 56 // We add in the OK button manually later because we want to focus it |
57 // explicitly. | 57 // explicitly. |
58 switch (dialog_->dialog_flags()) { | 58 switch (dialog_->dialog_flags()) { |
59 case MessageBoxFlags::kIsJavascriptAlert: | 59 case ui::MessageBoxFlags::kIsJavascriptAlert: |
60 buttons = GTK_BUTTONS_NONE; | 60 buttons = GTK_BUTTONS_NONE; |
61 message_type = GTK_MESSAGE_WARNING; | 61 message_type = GTK_MESSAGE_WARNING; |
62 break; | 62 break; |
63 | 63 |
64 case MessageBoxFlags::kIsJavascriptConfirm: | 64 case ui::MessageBoxFlags::kIsJavascriptConfirm: |
65 if (dialog_->is_before_unload_dialog()) { | 65 if (dialog_->is_before_unload_dialog()) { |
66 // onbeforeunload also uses a confirm prompt, it just has custom | 66 // onbeforeunload also uses a confirm prompt, it just has custom |
67 // buttons. We add the buttons using gtk_dialog_add_button below. | 67 // buttons. We add the buttons using gtk_dialog_add_button below. |
68 buttons = GTK_BUTTONS_NONE; | 68 buttons = GTK_BUTTONS_NONE; |
69 } else { | 69 } else { |
70 buttons = GTK_BUTTONS_CANCEL; | 70 buttons = GTK_BUTTONS_CANCEL; |
71 } | 71 } |
72 message_type = GTK_MESSAGE_QUESTION; | 72 message_type = GTK_MESSAGE_QUESTION; |
73 break; | 73 break; |
74 | 74 |
75 case MessageBoxFlags::kIsJavascriptPrompt: | 75 case ui::MessageBoxFlags::kIsJavascriptPrompt: |
76 buttons = GTK_BUTTONS_CANCEL; | 76 buttons = GTK_BUTTONS_CANCEL; |
77 message_type = GTK_MESSAGE_QUESTION; | 77 message_type = GTK_MESSAGE_QUESTION; |
78 break; | 78 break; |
79 | 79 |
80 default: | 80 default: |
81 NOTREACHED(); | 81 NOTREACHED(); |
82 } | 82 } |
83 | 83 |
84 // We want the alert to be app modal so put all the browser windows into the | 84 // We want the alert to be app modal so put all the browser windows into the |
85 // same window group. | 85 // same window group. |
86 gtk_util::MakeAppModalWindowGroup(); | 86 gtk_util::MakeAppModalWindowGroup(); |
87 | 87 |
88 gtk_dialog_ = gtk_message_dialog_new(parent_window, | 88 gtk_dialog_ = gtk_message_dialog_new(parent_window, |
89 GTK_DIALOG_MODAL, message_type, buttons, "%s", | 89 GTK_DIALOG_MODAL, message_type, buttons, "%s", |
90 WideToUTF8(dialog_->message_text()).c_str()); | 90 WideToUTF8(dialog_->message_text()).c_str()); |
91 gtk_util::ApplyMessageDialogQuirks(gtk_dialog_); | 91 gtk_util::ApplyMessageDialogQuirks(gtk_dialog_); |
92 gtk_window_set_title(GTK_WINDOW(gtk_dialog_), | 92 gtk_window_set_title(GTK_WINDOW(gtk_dialog_), |
93 WideToUTF8(dialog_->title()).c_str()); | 93 WideToUTF8(dialog_->title()).c_str()); |
94 | 94 |
95 // Adjust content area as needed. Set up the prompt text entry or | 95 // Adjust content area as needed. Set up the prompt text entry or |
96 // suppression check box. | 96 // suppression check box. |
97 if (MessageBoxFlags::kIsJavascriptPrompt == dialog_->dialog_flags()) { | 97 if (ui::MessageBoxFlags::kIsJavascriptPrompt == dialog_->dialog_flags()) { |
98 // TODO(tc): Replace with gtk_dialog_get_content_area() when using GTK 2.14+ | 98 // TODO(tc): Replace with gtk_dialog_get_content_area() when using GTK 2.14+ |
99 GtkWidget* contents_vbox = GTK_DIALOG(gtk_dialog_)->vbox; | 99 GtkWidget* contents_vbox = GTK_DIALOG(gtk_dialog_)->vbox; |
100 GtkWidget* text_box = gtk_entry_new(); | 100 GtkWidget* text_box = gtk_entry_new(); |
101 gtk_entry_set_text(GTK_ENTRY(text_box), | 101 gtk_entry_set_text(GTK_ENTRY(text_box), |
102 WideToUTF8(dialog_->default_prompt_text()).c_str()); | 102 WideToUTF8(dialog_->default_prompt_text()).c_str()); |
103 gtk_box_pack_start(GTK_BOX(contents_vbox), text_box, TRUE, TRUE, 0); | 103 gtk_box_pack_start(GTK_BOX(contents_vbox), text_box, TRUE, TRUE, 0); |
104 g_object_set_data(G_OBJECT(gtk_dialog_), kPromptTextId, text_box); | 104 g_object_set_data(G_OBJECT(gtk_dialog_), kPromptTextId, text_box); |
105 gtk_entry_set_activates_default(GTK_ENTRY(text_box), TRUE); | 105 gtk_entry_set_activates_default(GTK_ENTRY(text_box), TRUE); |
106 } | 106 } |
107 | 107 |
(...skipping 14 matching lines...) Expand all Loading... |
122 GTK_RESPONSE_OK); | 122 GTK_RESPONSE_OK); |
123 | 123 |
124 button_text = l10n_util::GetStringUTF8( | 124 button_text = l10n_util::GetStringUTF8( |
125 IDS_BEFOREUNLOAD_MESSAGEBOX_CANCEL_BUTTON_LABEL); | 125 IDS_BEFOREUNLOAD_MESSAGEBOX_CANCEL_BUTTON_LABEL); |
126 gtk_dialog_add_button(GTK_DIALOG(gtk_dialog_), button_text.c_str(), | 126 gtk_dialog_add_button(GTK_DIALOG(gtk_dialog_), button_text.c_str(), |
127 GTK_RESPONSE_CANCEL); | 127 GTK_RESPONSE_CANCEL); |
128 } else { | 128 } else { |
129 // Add the OK button and focus it. | 129 // Add the OK button and focus it. |
130 GtkWidget* ok_button = gtk_dialog_add_button(GTK_DIALOG(gtk_dialog_), | 130 GtkWidget* ok_button = gtk_dialog_add_button(GTK_DIALOG(gtk_dialog_), |
131 GTK_STOCK_OK, GTK_RESPONSE_OK); | 131 GTK_STOCK_OK, GTK_RESPONSE_OK); |
132 if (MessageBoxFlags::kIsJavascriptPrompt != dialog_->dialog_flags()) | 132 if (ui::MessageBoxFlags::kIsJavascriptPrompt != dialog_->dialog_flags()) |
133 gtk_widget_grab_focus(ok_button); | 133 gtk_widget_grab_focus(ok_button); |
134 } | 134 } |
135 | 135 |
136 gtk_dialog_set_default_response(GTK_DIALOG(gtk_dialog_), GTK_RESPONSE_OK); | 136 gtk_dialog_set_default_response(GTK_DIALOG(gtk_dialog_), GTK_RESPONSE_OK); |
137 g_signal_connect(gtk_dialog_, "response", | 137 g_signal_connect(gtk_dialog_, "response", |
138 G_CALLBACK(OnDialogResponseThunk), this); | 138 G_CALLBACK(OnDialogResponseThunk), this); |
139 } | 139 } |
140 | 140 |
141 JSModalDialogGtk::~JSModalDialogGtk() { | 141 JSModalDialogGtk::~JSModalDialogGtk() { |
142 } | 142 } |
143 | 143 |
144 //////////////////////////////////////////////////////////////////////////////// | 144 //////////////////////////////////////////////////////////////////////////////// |
145 // JSModalDialogGtk, NativeAppModalDialog implementation: | 145 // JSModalDialogGtk, NativeAppModalDialog implementation: |
146 | 146 |
147 int JSModalDialogGtk::GetAppModalDialogButtons() const { | 147 int JSModalDialogGtk::GetAppModalDialogButtons() const { |
148 switch (dialog_->dialog_flags()) { | 148 switch (dialog_->dialog_flags()) { |
149 case MessageBoxFlags::kIsJavascriptAlert: | 149 case ui::MessageBoxFlags::kIsJavascriptAlert: |
150 return MessageBoxFlags::DIALOGBUTTON_OK; | 150 return ui::MessageBoxFlags::DIALOGBUTTON_OK; |
151 | 151 |
152 case MessageBoxFlags::kIsJavascriptConfirm: | 152 case ui::MessageBoxFlags::kIsJavascriptConfirm: |
153 return MessageBoxFlags::DIALOGBUTTON_OK | | 153 return ui::MessageBoxFlags::DIALOGBUTTON_OK | |
154 MessageBoxFlags::DIALOGBUTTON_CANCEL; | 154 ui::MessageBoxFlags::DIALOGBUTTON_CANCEL; |
155 | 155 |
156 case MessageBoxFlags::kIsJavascriptPrompt: | 156 case ui::MessageBoxFlags::kIsJavascriptPrompt: |
157 return MessageBoxFlags::DIALOGBUTTON_OK; | 157 return ui::MessageBoxFlags::DIALOGBUTTON_OK; |
158 | 158 |
159 default: | 159 default: |
160 NOTREACHED(); | 160 NOTREACHED(); |
161 return 0; | 161 return 0; |
162 } | 162 } |
163 } | 163 } |
164 | 164 |
165 void JSModalDialogGtk::ShowAppModalDialog() { | 165 void JSModalDialogGtk::ShowAppModalDialog() { |
166 gtk_util::ShowModalDialogWithMinLocalizedWidth(GTK_WIDGET(gtk_dialog_), | 166 gtk_util::ShowModalDialogWithMinLocalizedWidth(GTK_WIDGET(gtk_dialog_), |
167 IDS_ALERT_DIALOG_WIDTH_CHARS); | 167 IDS_ALERT_DIALOG_WIDTH_CHARS); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 | 215 |
216 //////////////////////////////////////////////////////////////////////////////// | 216 //////////////////////////////////////////////////////////////////////////////// |
217 // NativeAppModalDialog, public: | 217 // NativeAppModalDialog, public: |
218 | 218 |
219 // static | 219 // static |
220 NativeAppModalDialog* NativeAppModalDialog::CreateNativeJavaScriptPrompt( | 220 NativeAppModalDialog* NativeAppModalDialog::CreateNativeJavaScriptPrompt( |
221 JavaScriptAppModalDialog* dialog, | 221 JavaScriptAppModalDialog* dialog, |
222 gfx::NativeWindow parent_window) { | 222 gfx::NativeWindow parent_window) { |
223 return new JSModalDialogGtk(dialog, parent_window); | 223 return new JSModalDialogGtk(dialog, parent_window); |
224 } | 224 } |
OLD | NEW |