Home | History | Annotate | Download | only in window
      1 // Copyright (c) 2011 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 #include "ui/views/window/native_frame_view.h"
      6 
      7 #include "ui/views/widget/native_widget.h"
      8 #include "ui/views/widget/widget.h"
      9 
     10 #if defined(OS_WIN)
     11 #include "ui/views/win/hwnd_util.h"
     12 #endif
     13 
     14 namespace views {
     15 
     16 ////////////////////////////////////////////////////////////////////////////////
     17 // NativeFrameView, public:
     18 
     19 NativeFrameView::NativeFrameView(Widget* frame)
     20     : NonClientFrameView(),
     21       frame_(frame) {
     22 }
     23 
     24 NativeFrameView::~NativeFrameView() {
     25 }
     26 
     27 ////////////////////////////////////////////////////////////////////////////////
     28 // NativeFrameView, NonClientFrameView overrides:
     29 
     30 gfx::Rect NativeFrameView::GetBoundsForClientView() const {
     31   return gfx::Rect(0, 0, width(), height());
     32 }
     33 
     34 gfx::Rect NativeFrameView::GetWindowBoundsForClientBounds(
     35     const gfx::Rect& client_bounds) const {
     36 #if defined(OS_WIN)
     37   return views::GetWindowBoundsForClientBounds(
     38       static_cast<View*>(const_cast<NativeFrameView*>(this)), client_bounds);
     39 #else
     40   // TODO(sad):
     41   return client_bounds;
     42 #endif
     43 }
     44 
     45 int NativeFrameView::NonClientHitTest(const gfx::Point& point) {
     46   return frame_->client_view()->NonClientHitTest(point);
     47 }
     48 
     49 void NativeFrameView::GetWindowMask(const gfx::Size& size,
     50                                     gfx::Path* window_mask) {
     51   // Nothing to do, we use the default window mask.
     52 }
     53 
     54 void NativeFrameView::ResetWindowControls() {
     55   // Nothing to do.
     56 }
     57 
     58 void NativeFrameView::UpdateWindowIcon() {
     59   // Nothing to do.
     60 }
     61 
     62 void NativeFrameView::UpdateWindowTitle() {
     63   // Nothing to do.
     64 }
     65 
     66 // Returns the client size. On Windows, this is the expected behavior for
     67 // native frames (see |NativeWidgetWin::WidgetSizeIsClientSize()|), while other
     68 // platforms currently always return client bounds from
     69 // |GetWindowBoundsForClientBounds()|.
     70 gfx::Size NativeFrameView::GetPreferredSize() {
     71   return frame_->client_view()->GetPreferredSize();
     72 }
     73 
     74 gfx::Size NativeFrameView::GetMinimumSize() {
     75   return frame_->client_view()->GetMinimumSize();
     76 }
     77 
     78 gfx::Size NativeFrameView::GetMaximumSize() {
     79   return frame_->client_view()->GetMaximumSize();
     80 }
     81 
     82 }  // namespace views
     83