172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_GTK_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_GTK_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/basictypes.h" 1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/views/frame/browser_frame.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/views/frame/native_browser_frame.h" 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/window/window_gtk.h" 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BrowserNonClientFrameView; 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BrowserRootView; 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BrowserFrameGtk : public BrowserFrame, 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public views::WindowGtk, 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public NativeBrowserFrame { 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Normally you will create this class by calling BrowserFrame::Create. 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Init must be called before using this class, which Create will do for you. 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BrowserFrameGtk(BrowserView* browser_view, Profile* profile); 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~BrowserFrameGtk(); 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Creates a frame view and initializes the window. This 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // initialization function must be called after construction, it is 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // separate to avoid recursive calling of the frame from its 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // constructor. 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void InitBrowserFrame(); 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected: 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Overridden from NativeBrowserFrame: 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual views::NativeWindow* AsNativeWindow() OVERRIDE; 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual const views::NativeWindow* AsNativeWindow() const OVERRIDE; 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual BrowserNonClientFrameView* CreateBrowserNonClientFrameView() OVERRIDE; 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual int GetMinimizeButtonOffset() const OVERRIDE; 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ui::ThemeProvider* GetThemeProviderForFrame() const OVERRIDE; 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual bool AlwaysUseNativeFrame() const OVERRIDE; 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void TabStripDisplayModeChanged() OVERRIDE; 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Overridden from views::WindowGtk: 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ui::ThemeProvider* GetThemeProvider() const OVERRIDE; 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void SetInitialFocus() OVERRIDE; 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual views::RootView* CreateRootView(); 4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator); 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual views::NonClientFrameView* CreateFrameViewForWindow() OVERRIDE; 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual gboolean OnWindowStateEvent(GtkWidget* widget, 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch GdkEventWindowState* event); 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual gboolean OnConfigureEvent(GtkWidget* widget, 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch GdkEventConfigure* event); 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BrowserView* browser_view() const { 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch return browser_view_; 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NativeBrowserFrameDelegate* delegate_; 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The BrowserView is our ClientView. This is a pointer to it. 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BrowserView* browser_view_; 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(BrowserFrameGtk); 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_GTK_H_ 67