// Copyright (c) 2011 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_VIEWS_FRAME_BROWSER_FRAME_GTK_H_ #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_GTK_H_ #pragma once #include "base/basictypes.h" #include "chrome/browser/ui/views/frame/browser_frame.h" #include "chrome/browser/ui/views/frame/native_browser_frame.h" #include "views/window/window_gtk.h" class BrowserNonClientFrameView; class BrowserRootView; class BrowserFrameGtk : public BrowserFrame, public views::WindowGtk, public NativeBrowserFrame { public: // Normally you will create this class by calling BrowserFrame::Create. // Init must be called before using this class, which Create will do for you. BrowserFrameGtk(BrowserView* browser_view, Profile* profile); virtual ~BrowserFrameGtk(); // Creates a frame view and initializes the window. This // initialization function must be called after construction, it is // separate to avoid recursive calling of the frame from its // constructor. virtual void InitBrowserFrame(); protected: // Overridden from NativeBrowserFrame: virtual views::NativeWindow* AsNativeWindow() OVERRIDE; virtual const views::NativeWindow* AsNativeWindow() const OVERRIDE; virtual BrowserNonClientFrameView* CreateBrowserNonClientFrameView() OVERRIDE; virtual int GetMinimizeButtonOffset() const OVERRIDE; virtual ui::ThemeProvider* GetThemeProviderForFrame() const OVERRIDE; virtual bool AlwaysUseNativeFrame() const OVERRIDE; virtual void TabStripDisplayModeChanged() OVERRIDE; // Overridden from views::WindowGtk: virtual ui::ThemeProvider* GetThemeProvider() const OVERRIDE; virtual void SetInitialFocus() OVERRIDE; virtual views::RootView* CreateRootView(); virtual bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator); virtual views::NonClientFrameView* CreateFrameViewForWindow() OVERRIDE; virtual gboolean OnWindowStateEvent(GtkWidget* widget, GdkEventWindowState* event); virtual gboolean OnConfigureEvent(GtkWidget* widget, GdkEventConfigure* event); BrowserView* browser_view() const { return browser_view_; } private: NativeBrowserFrameDelegate* delegate_; // The BrowserView is our ClientView. This is a pointer to it. BrowserView* browser_view_; DISALLOW_COPY_AND_ASSIGN(BrowserFrameGtk); }; #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_GTK_H_