Index: chrome/browser/ui/gtk/constrained_web_dialog_delegate_gtk.cc |
diff --git a/chrome/browser/ui/gtk/constrained_web_dialog_delegate_gtk.cc b/chrome/browser/ui/gtk/constrained_web_dialog_delegate_gtk.cc |
index a45672227b71c12e58d2d0af5a642b4f86ec748d..3777719e150e370f8c3efcd6d707d09f2da9d675 100644 |
--- a/chrome/browser/ui/gtk/constrained_web_dialog_delegate_gtk.cc |
+++ b/chrome/browser/ui/gtk/constrained_web_dialog_delegate_gtk.cc |
@@ -48,8 +48,7 @@ class ConstrainedWebDialogDelegateGtk |
} // namespace |
class ConstrainedWebDialogDelegateViewGtk |
- : public ConstrainedWindowGtkDelegate, |
- public ConstrainedWebDialogDelegate { |
+ : public ConstrainedWebDialogDelegate { |
public: |
ConstrainedWebDialogDelegateViewGtk( |
content::BrowserContext* browser_context, |
@@ -79,23 +78,6 @@ class ConstrainedWebDialogDelegateViewGtk |
return impl_->GetWebContents(); |
} |
- // ConstrainedWindowGtkDelegate interface |
- virtual GtkWidget* GetWidgetRoot() OVERRIDE { |
- return GetWebContents()->GetView()->GetNativeView(); |
- } |
- virtual GtkWidget* GetFocusWidget() OVERRIDE { |
- return GetWebContents()->GetView()->GetContentNativeView(); |
- } |
- virtual void DeleteDelegate() OVERRIDE { |
- if (!impl_->closed_via_webui()) |
- GetWebDialogDelegate()->OnDialogClosed(""); |
- delete this; |
- } |
- virtual bool GetBackgroundColor(GdkColor* color) OVERRIDE { |
- *color = ui::kGdkWhite; |
- return true; |
- } |
- |
void SetWindow(GtkWidget* window) { |
impl_->set_window(window); |
} |
@@ -105,6 +87,8 @@ class ConstrainedWebDialogDelegateViewGtk |
} |
private: |
+ CHROMEGTK_CALLBACK_0(ConstrainedWebDialogDelegateViewGtk, void, OnDestroy); |
+ |
scoped_ptr<ConstrainedWebDialogDelegateGtk> impl_; |
DISALLOW_COPY_AND_ASSIGN(ConstrainedWebDialogDelegateViewGtk); |
@@ -120,13 +104,31 @@ ConstrainedWebDialogDelegateViewGtk::ConstrainedWebDialogDelegateViewGtk( |
tab_delegate)) { |
gfx::Size dialog_size; |
delegate->GetDialogSize(&dialog_size); |
- gtk_widget_set_size_request(GTK_WIDGET(GetWidgetRoot()), |
+ GtkWidget* contents = |
+ GTK_WIDGET(GetWebContents()->GetView()->GetNativeView()); |
+ gtk_widget_set_size_request(contents, |
dialog_size.width(), |
dialog_size.height()); |
- gtk_widget_show_all(GetWidgetRoot()); |
+ gtk_widget_show_all(contents); |
+ |
+ g_signal_connect(contents, "destroy", G_CALLBACK(OnDestroyThunk), this); |
} |
+void ConstrainedWebDialogDelegateViewGtk::OnDestroy(GtkWidget* widget) { |
+ if (!impl_->closed_via_webui()) |
+ GetWebDialogDelegate()->OnDialogClosed(""); |
+ delete this; |
+} |
+ |
+namespace { |
+void SetBackgroundColor(GtkWidget* widget, const GdkColor &color) { |
Elliot Glaysher
2013/03/13 23:48:10
This should go in the existing anonymous namespace
Mike Wittman
2013/03/14 00:34:48
Done.
|
+ gtk_widget_modify_base(widget, GTK_STATE_NORMAL, &color); |
+ gtk_widget_modify_fg(widget, GTK_STATE_NORMAL, &color); |
+ gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, &color); |
+} |
+} // namespace |
+ |
ConstrainedWebDialogDelegate* CreateConstrainedWebDialog( |
content::BrowserContext* browser_context, |
WebDialogDelegate* delegate, |
@@ -136,7 +138,12 @@ ConstrainedWebDialogDelegate* CreateConstrainedWebDialog( |
new ConstrainedWebDialogDelegateViewGtk( |
browser_context, delegate, tab_delegate); |
GtkWidget* window = |
- CreateWebContentsModalDialogGtk(web_contents, constrained_delegate); |
+ CreateWebContentsModalDialogGtk( |
+ web_contents, |
+ constrained_delegate->GetWebContents()->GetView()->GetNativeView(), |
+ constrained_delegate->GetWebContents()->GetView()-> |
+ GetContentNativeView()); |
+ SetBackgroundColor(window, ui::kGdkWhite); |
constrained_delegate->SetWindow(window); |
WebContentsModalDialogManager* web_contents_modal_dialog_manager = |