| 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_
|
|
|