summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-11-25 19:40:10 +0000
committerBen Murdoch <benm@google.com>2010-12-03 13:52:53 +0000
commit4a5e2dc747d50c653511c68ccb2cfbfb740bd5a7 (patch)
tree938665d93a11fe7a6d0124e3c1e020d1f9d3f947 /chrome/browser/ui/views/frame/opaque_browser_frame_view.h
parent7c627d87728a355737862918d144f98f69406954 (diff)
downloadexternal_chromium-4a5e2dc747d50c653511c68ccb2cfbfb740bd5a7.zip
external_chromium-4a5e2dc747d50c653511c68ccb2cfbfb740bd5a7.tar.gz
external_chromium-4a5e2dc747d50c653511c68ccb2cfbfb740bd5a7.tar.bz2
Merge Chromium at r66597: Initial merge by git.
Change-Id: I9639f8a997f90ec219573aa22a49f5dbde78cc7b
Diffstat (limited to 'chrome/browser/ui/views/frame/opaque_browser_frame_view.h')
-rw-r--r--chrome/browser/ui/views/frame/opaque_browser_frame_view.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.h b/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
new file mode 100644
index 0000000..05830d5
--- /dev/null
+++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
@@ -0,0 +1,148 @@
+// Copyright (c) 2010 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_OPAQUE_BROWSER_FRAME_VIEW_H_
+#define CHROME_BROWSER_UI_VIEWS_FRAME_OPAQUE_BROWSER_FRAME_VIEW_H_
+#pragma once
+
+#include "chrome/browser/views/frame/browser_frame.h"
+#include "chrome/browser/views/frame/browser_non_client_frame_view.h"
+#include "chrome/browser/views/tab_icon_view.h"
+#include "views/controls/button/button.h"
+#include "views/window/non_client_view.h"
+
+class BaseTabStrip;
+class BrowserView;
+namespace gfx {
+class Font;
+}
+class TabContents;
+namespace views {
+class ImageButton;
+class ImageView;
+}
+
+class OpaqueBrowserFrameView : public BrowserNonClientFrameView,
+ public views::ButtonListener,
+ public TabIconView::TabIconViewModel {
+ public:
+ // Constructs a non-client view for an BrowserFrame.
+ OpaqueBrowserFrameView(BrowserFrame* frame, BrowserView* browser_view);
+ virtual ~OpaqueBrowserFrameView();
+
+ // Overridden from BrowserNonClientFrameView:
+ virtual gfx::Rect GetBoundsForTabStrip(BaseTabStrip* tabstrip) const;
+ virtual int GetHorizontalTabStripVerticalOffset(bool restored) const;
+ virtual void UpdateThrobber(bool running);
+ virtual gfx::Size GetMinimumSize();
+
+ protected:
+ // Overridden from views::NonClientFrameView:
+ virtual gfx::Rect GetBoundsForClientView() const;
+ virtual bool AlwaysUseNativeFrame() const;
+ virtual bool AlwaysUseCustomFrame() const;
+ virtual gfx::Rect GetWindowBoundsForClientBounds(
+ const gfx::Rect& client_bounds) const;
+ virtual int NonClientHitTest(const gfx::Point& point);
+ virtual void GetWindowMask(const gfx::Size& size, gfx::Path* window_mask);
+ virtual void EnableClose(bool enable);
+ virtual void ResetWindowControls();
+
+ // Overridden from views::View:
+ virtual void Paint(gfx::Canvas* canvas);
+ virtual void Layout();
+ virtual bool HitTest(const gfx::Point& l) const;
+ virtual AccessibilityTypes::Role GetAccessibleRole();
+
+ // Overridden from views::ButtonListener:
+ virtual void ButtonPressed(views::Button* sender, const views::Event& event);
+
+ // Overridden from TabIconView::TabIconViewModel:
+ virtual bool ShouldTabIconViewAnimate() const;
+ virtual SkBitmap GetFavIconForTabIconView();
+
+ private:
+ // Returns the thickness of the border that makes up the window frame edges.
+ // This does not include any client edge. If |restored| is true, acts as if
+ // the window is restored regardless of the real mode.
+ int FrameBorderThickness(bool restored) const;
+
+ // Returns the height of the top resize area. This is smaller than the frame
+ // border height in order to increase the window draggable area.
+ int TopResizeHeight() const;
+
+ // Returns the thickness of the entire nonclient left, right, and bottom
+ // borders, including both the window frame and any client edge.
+ int NonClientBorderThickness() const;
+
+ // Returns the height of the entire nonclient top border, including the window
+ // frame, any title area, and any connected client edge. If |restored| is
+ // true, acts as if the window is restored regardless of the real mode. If
+ // |ignore_vertical_tabs| is true, acts as if vertical tabs are off regardless
+ // of the real state.
+ int NonClientTopBorderHeight(bool restored, bool ignore_vertical_tabs) const;
+
+ // Returns the y-coordinate of the caption buttons. If |restored| is true,
+ // acts as if the window is restored regardless of the real mode.
+ int CaptionButtonY(bool restored) const;
+
+ // Returns the thickness of the 3D edge along the bottom of the titlebar. If
+ // |restored| is true, acts as if the window is restored regardless of the
+ // real mode.
+ int TitlebarBottomThickness(bool restored) const;
+
+ // Returns the size of the titlebar icon. This is used even when the icon is
+ // not shown, e.g. to set the titlebar height.
+ int IconSize() const;
+
+ // Returns the bounds of the titlebar icon (or where the icon would be if
+ // there was one).
+ gfx::Rect IconBounds() const;
+
+ // Paint various sub-components of this view. The *FrameBorder() functions
+ // also paint the background of the titlebar area, since the top frame border
+ // and titlebar background are a contiguous component.
+ void PaintRestoredFrameBorder(gfx::Canvas* canvas);
+ void PaintMaximizedFrameBorder(gfx::Canvas* canvas);
+ void PaintTitleBar(gfx::Canvas* canvas);
+ void PaintToolbarBackground(gfx::Canvas* canvas);
+ void PaintOTRAvatar(gfx::Canvas* canvas);
+ void PaintRestoredClientEdge(gfx::Canvas* canvas);
+
+ // Layout various sub-components of this view.
+ void LayoutWindowControls();
+ void LayoutTitleBar();
+ void LayoutOTRAvatar();
+
+ // Returns the bounds of the client area for the specified view size.
+ gfx::Rect CalculateClientAreaBounds(int width, int height) const;
+
+ // The layout rect of the title, if visible.
+ gfx::Rect title_bounds_;
+
+ // The layout rect of the OTR avatar icon, if visible.
+ gfx::Rect otr_avatar_bounds_;
+
+ // Window controls.
+ views::ImageButton* minimize_button_;
+ views::ImageButton* maximize_button_;
+ views::ImageButton* restore_button_;
+ views::ImageButton* close_button_;
+
+ // The Window icon.
+ TabIconView* window_icon_;
+
+ // The frame that hosts this view.
+ BrowserFrame* frame_;
+
+ // The BrowserView hosted within this View.
+ BrowserView* browser_view_;
+
+ // The bounds of the ClientView.
+ gfx::Rect client_view_bounds_;
+
+ DISALLOW_COPY_AND_ASSIGN(OpaqueBrowserFrameView);
+};
+
+#endif // CHROME_BROWSER_UI_VIEWS_FRAME_OPAQUE_BROWSER_FRAME_VIEW_H_