Chromium Code Reviews| 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 = |