| Index: chrome/browser/gtk/repost_form_warning_gtk.cc
|
| ===================================================================
|
| --- chrome/browser/gtk/repost_form_warning_gtk.cc (revision 42478)
|
| +++ chrome/browser/gtk/repost_form_warning_gtk.cc (working copy)
|
| @@ -9,75 +9,45 @@
|
| #include "base/message_loop.h"
|
| #include "chrome/browser/gtk/gtk_util.h"
|
| #include "chrome/browser/tab_contents/navigation_controller.h"
|
| -#include "chrome/browser/tab_contents/tab_contents.h"
|
| #include "chrome/common/notification_service.h"
|
| #include "grit/generated_resources.h"
|
|
|
| -RepostFormWarningGtk::RepostFormWarningGtk(GtkWindow* parent,
|
| - TabContents* tab_contents)
|
| - : navigation_controller_(&tab_contents->controller()) {
|
| - dialog_ = gtk_vbox_new(NULL, gtk_util::kContentAreaBorder);
|
| - gtk_box_set_spacing(GTK_BOX(dialog_), gtk_util::kContentAreaSpacing);
|
| - GtkWidget* label = gtk_label_new(
|
| +RepostFormWarningGtk::RepostFormWarningGtk(
|
| + GtkWindow* parent,
|
| + NavigationController* navigation_controller)
|
| + : navigation_controller_(navigation_controller) {
|
| + dialog_ = gtk_message_dialog_new(
|
| + parent,
|
| + GTK_DIALOG_MODAL,
|
| + GTK_MESSAGE_QUESTION,
|
| + GTK_BUTTONS_NONE,
|
| + "%s",
|
| l10n_util::GetStringUTF8(IDS_HTTP_POST_WARNING).c_str());
|
| - GtkWidget* image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_QUESTION,
|
| - GTK_ICON_SIZE_DIALOG);
|
| - gtk_misc_set_alignment(GTK_MISC(image), 0.5, 0.0);
|
| + gtk_util::ApplyMessageDialogQuirks(dialog_);
|
| + gtk_window_set_title(GTK_WINDOW(dialog_),
|
| + l10n_util::GetStringUTF8(IDS_HTTP_POST_WARNING_TITLE).c_str());
|
| + gtk_util::AddButtonToDialog(dialog_,
|
| + l10n_util::GetStringUTF8(IDS_CANCEL).c_str(),
|
| + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
|
| + gtk_util::AddButtonToDialog(dialog_,
|
| + l10n_util::GetStringUTF8(IDS_HTTP_POST_WARNING_RESEND).c_str(),
|
| + GTK_STOCK_REFRESH, GTK_RESPONSE_OK);
|
| + gtk_util::SetWindowIcon(GTK_WINDOW(dialog_));
|
|
|
| - gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
|
| - gtk_label_set_selectable(GTK_LABEL(label), TRUE);
|
| + g_signal_connect(dialog_, "response", G_CALLBACK(OnResponse), this);
|
| + g_signal_connect(dialog_, "destroy", G_CALLBACK(OnWindowDestroy), this);
|
|
|
| - GtkWidget *hbox = gtk_hbox_new(FALSE, gtk_util::kControlSpacing);
|
| + gtk_widget_show_all(dialog_);
|
|
|
| - gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
|
| -
|
| - gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
|
| -
|
| - gtk_box_pack_start(GTK_BOX(dialog_), hbox, FALSE, FALSE, 0);
|
| -
|
| - GtkWidget* buttonBox = gtk_hbutton_box_new();
|
| - gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonBox), GTK_BUTTONBOX_END);
|
| - gtk_box_set_spacing(GTK_BOX(buttonBox), gtk_util::kControlSpacing);
|
| - gtk_box_pack_end(GTK_BOX(dialog_), buttonBox, FALSE, TRUE, 0);
|
| -
|
| - cancel_ = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
|
| - gtk_button_set_label(GTK_BUTTON(cancel_),
|
| - l10n_util::GetStringUTF8(IDS_CANCEL).c_str());
|
| - g_signal_connect(cancel_, "clicked", G_CALLBACK(OnCancelThunk), this);
|
| - gtk_box_pack_end(GTK_BOX(buttonBox), cancel_, FALSE, TRUE, 0);
|
| -
|
| - ok_ = gtk_button_new_from_stock(GTK_STOCK_REFRESH);
|
| - gtk_button_set_label(
|
| - GTK_BUTTON(ok_),
|
| - l10n_util::GetStringUTF8(IDS_HTTP_POST_WARNING_RESEND).c_str());
|
| - g_signal_connect(ok_, "clicked", G_CALLBACK(OnRefreshThunk), this);
|
| - gtk_box_pack_end(GTK_BOX(buttonBox), ok_, FALSE, TRUE, 0);
|
| -
|
| - g_signal_connect(cancel_, "hierarchy-changed",
|
| - G_CALLBACK(OnHierarchyChangedThunk), this);
|
| -
|
| - window_ = tab_contents->CreateConstrainedDialog(this);
|
| -
|
| registrar_.Add(this, NotificationType::LOAD_START,
|
| Source<NavigationController>(navigation_controller_));
|
| registrar_.Add(this, NotificationType::TAB_CLOSING,
|
| Source<NavigationController>(navigation_controller_));
|
| - registrar_.Add(this, NotificationType::RELOADING,
|
| - Source<NavigationController>(navigation_controller_));
|
| -
|
| }
|
|
|
| RepostFormWarningGtk::~RepostFormWarningGtk() {
|
| }
|
|
|
| -GtkWidget* RepostFormWarningGtk::GetWidgetRoot() {
|
| - return dialog_;
|
| -}
|
| -
|
| -void RepostFormWarningGtk::DeleteDelegate() {
|
| - MessageLoop::current()->DeleteSoon(FROM_HERE, this);
|
| -}
|
| -
|
| void RepostFormWarningGtk::Observe(NotificationType type,
|
| const NotificationSource& source,
|
| const NotificationDetails& details) {
|
| @@ -86,11 +56,11 @@
|
| // a navigation controller anymore.
|
| if (dialog_ && navigation_controller_ &&
|
| (type == NotificationType::LOAD_START ||
|
| - type == NotificationType::TAB_CLOSING ||
|
| - type == NotificationType::RELOADING)) {
|
| + type == NotificationType::TAB_CLOSING)) {
|
| DCHECK_EQ(Source<NavigationController>(source).ptr(),
|
| navigation_controller_);
|
| - OnCancel(dialog_);
|
| + navigation_controller_ = NULL;
|
| + Destroy();
|
| }
|
| }
|
|
|
| @@ -99,29 +69,20 @@
|
| gtk_widget_destroy(dialog_);
|
| dialog_ = NULL;
|
| }
|
| - window_->CloseConstrainedWindow();
|
| }
|
|
|
| -void RepostFormWarningGtk::OnRefresh(GtkWidget* widget) {
|
| - if (navigation_controller_) {
|
| - navigation_controller_->ContinuePendingReload();
|
| - // reloading the page will close the dialog.
|
| +// static
|
| +void RepostFormWarningGtk::OnResponse(GtkWidget* widget, int response,
|
| + RepostFormWarningGtk* dialog) {
|
| + dialog->Destroy();
|
| + if (response == GTK_RESPONSE_OK) {
|
| + if (dialog->navigation_controller_)
|
| + dialog->navigation_controller_->Reload(false);
|
| }
|
| }
|
|
|
| -void RepostFormWarningGtk::OnCancel(GtkWidget* widget) {
|
| - if (navigation_controller_) {
|
| - navigation_controller_->CancelPendingReload();
|
| - }
|
| - Destroy();
|
| +// static
|
| +void RepostFormWarningGtk::OnWindowDestroy(GtkWidget* widget,
|
| + RepostFormWarningGtk* dialog) {
|
| + MessageLoop::current()->DeleteSoon(FROM_HERE, dialog);
|
| }
|
| -
|
| -void RepostFormWarningGtk::OnHierarchyChanged(GtkWidget* root,
|
| - GtkWidget* previous_toplevel) {
|
| - DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
| - if (!GTK_WIDGET_TOPLEVEL(gtk_widget_get_toplevel(cancel_))) {
|
| - return;
|
| - }
|
| - gtk_widget_grab_focus(cancel_);
|
| -}
|
| -
|
|
|