1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_WIN_H_ 6#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_WIN_H_ 7 8#include <windows.h> 9#include <uxtheme.h> 10 11#include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host.h" 12#include "chrome/browser/ui/views/frame/minimize_button_metrics_win.h" 13#include "ui/views/widget/desktop_aura/desktop_window_tree_host_win.h" 14 15class BrowserFrame; 16class BrowserView; 17class BrowserWindowPropertyManager; 18 19namespace views { 20class DesktopNativeWidgetAura; 21class NativeMenuWin; 22} 23 24class BrowserDesktopWindowTreeHostWin : public BrowserDesktopWindowTreeHost, 25 public views::DesktopWindowTreeHostWin { 26 public: 27 BrowserDesktopWindowTreeHostWin( 28 views::internal::NativeWidgetDelegate* native_widget_delegate, 29 views::DesktopNativeWidgetAura* desktop_native_widget_aura, 30 BrowserView* browser_view, 31 BrowserFrame* browser_frame); 32 virtual ~BrowserDesktopWindowTreeHostWin(); 33 34 private: 35 views::NativeMenuWin* GetSystemMenu(); 36 37 // Overridden from BrowserDesktopWindowTreeHost: 38 virtual DesktopWindowTreeHost* AsDesktopWindowTreeHost() OVERRIDE; 39 virtual int GetMinimizeButtonOffset() const OVERRIDE; 40 virtual bool UsesNativeSystemMenu() const OVERRIDE; 41 42 // Overridden from DesktopWindowTreeHostWin: 43 virtual int GetInitialShowState() const OVERRIDE; 44 virtual bool GetClientAreaInsets(gfx::Insets* insets) const OVERRIDE; 45 virtual void HandleCreate() OVERRIDE; 46 virtual void HandleFrameChanged() OVERRIDE; 47 virtual bool PreHandleMSG(UINT message, 48 WPARAM w_param, 49 LPARAM l_param, 50 LRESULT* result) OVERRIDE; 51 virtual void PostHandleMSG(UINT message, 52 WPARAM w_param, 53 LPARAM l_param) OVERRIDE; 54 virtual bool IsUsingCustomFrame() const OVERRIDE; 55 virtual bool ShouldUseNativeFrame() const OVERRIDE; 56 virtual void FrameTypeChanged() OVERRIDE; 57 58 void UpdateDWMFrame(); 59 60 MARGINS GetDWMFrameMargins() const; 61 62 BrowserView* browser_view_; 63 BrowserFrame* browser_frame_; 64 65 MinimizeButtonMetrics minimize_button_metrics_; 66 67 scoped_ptr<BrowserWindowPropertyManager> browser_window_property_manager_; 68 69 // The wrapped system menu itself. 70 scoped_ptr<views::NativeMenuWin> system_menu_; 71 72 // Necessary to avoid corruption on NC paint in Aero mode. 73 bool did_gdi_clear_; 74 75 DISALLOW_COPY_AND_ASSIGN(BrowserDesktopWindowTreeHostWin); 76}; 77 78 79#endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_WIN_H_ 80