Index: chrome/browser/ui/gtk/constrained_window_gtk.h |
diff --git a/chrome/browser/ui/gtk/constrained_window_gtk.h b/chrome/browser/ui/gtk/constrained_window_gtk.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..383fb361870a96619aae38aba6e2a1740f53a046 |
--- /dev/null |
+++ b/chrome/browser/ui/gtk/constrained_window_gtk.h |
@@ -0,0 +1,93 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_UI_GTK_CONSTRAINED_WINDOW_GTK_H_ |
+#define CHROME_BROWSER_UI_GTK_CONSTRAINED_WINDOW_GTK_H_ |
+#pragma once |
+ |
+#include <gtk/gtk.h> |
+ |
+#include "app/gtk_signal.h" |
+#include "base/basictypes.h" |
+#include "base/task.h" |
+#include "chrome/browser/gtk/owned_widget_gtk.h" |
+#include "chrome/browser/tab_contents/constrained_window.h" |
+ |
+class TabContents; |
+typedef struct _GdkColor GdkColor; |
+#if defined(TOUCH_UI) |
+class TabContentsViewViews; |
+#else |
+class TabContentsViewGtk; |
+#endif |
+ |
+class ConstrainedWindowGtkDelegate { |
+ public: |
+ // Returns the widget that will be put in the constrained window's container. |
+ virtual GtkWidget* GetWidgetRoot() = 0; |
+ |
+ // Tells the delegate to either delete itself or set up a task to delete |
+ // itself later. |
+ virtual void DeleteDelegate() = 0; |
+ |
+ virtual bool GetBackgroundColor(GdkColor* color); |
+ |
+ protected: |
+ virtual ~ConstrainedWindowGtkDelegate(); |
+}; |
+ |
+// Constrained window implementation for the GTK port. Unlike the Win32 system, |
+// ConstrainedWindowGtk doesn't draw draggable fake windows and instead just |
+// centers the dialog. It is thus an order of magnitude simpler. |
+class ConstrainedWindowGtk : public ConstrainedWindow { |
+ public: |
+#if defined(TOUCH_UI) |
+ typedef TabContentsViewViews TabContentsViewType; |
+#else |
+ typedef TabContentsViewGtk TabContentsViewType; |
+#endif |
+ |
+ virtual ~ConstrainedWindowGtk(); |
+ |
+ // Overridden from ConstrainedWindow: |
+ virtual void ShowConstrainedWindow(); |
+ virtual void CloseConstrainedWindow(); |
+ |
+ // Returns the TabContents that constrains this Constrained Window. |
+ TabContents* owner() const { return owner_; } |
+ |
+ // Returns the toplevel widget that displays this "window". |
+ GtkWidget* widget() { return border_.get(); } |
+ |
+ // Returns the View that we collaborate with to position ourselves. |
+ TabContentsViewType* ContainingView(); |
+ |
+ private: |
+ friend class ConstrainedWindow; |
+ |
+ ConstrainedWindowGtk(TabContents* owner, |
+ ConstrainedWindowGtkDelegate* delegate); |
+ |
+ // Handler for Escape. |
+ CHROMEGTK_CALLBACK_1(ConstrainedWindowGtk, gboolean, OnKeyPress, |
+ GdkEventKey*); |
+ |
+ // The TabContents that owns and constrains this ConstrainedWindow. |
+ TabContents* owner_; |
+ |
+ // The top level widget container that exports to our TabContentsView. |
+ OwnedWidgetGtk border_; |
+ |
+ // Delegate that provides the contents of this constrained window. |
+ ConstrainedWindowGtkDelegate* delegate_; |
+ |
+ // Stores if |ShowConstrainedWindow()| has been called. |
+ bool visible_; |
+ |
+ ScopedRunnableMethodFactory<ConstrainedWindowGtk> factory_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ConstrainedWindowGtk); |
+}; |
+ |
+#endif // CHROME_BROWSER_UI_GTK_CONSTRAINED_WINDOW_GTK_H_ |