| OLD | NEW |
| (Empty) |
| 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 #include "ui/views/window/client_view.h" | |
| 6 | |
| 7 #include "base/logging.h" | |
| 8 #include "ui/accessibility/ax_view_state.h" | |
| 9 #include "ui/base/hit_test.h" | |
| 10 #include "ui/views/widget/widget.h" | |
| 11 #include "ui/views/widget/widget_delegate.h" | |
| 12 | |
| 13 namespace views { | |
| 14 | |
| 15 // static | |
| 16 const char ClientView::kViewClassName[] = | |
| 17 "ui/views/window/ClientView"; | |
| 18 | |
| 19 /////////////////////////////////////////////////////////////////////////////// | |
| 20 // ClientView, public: | |
| 21 | |
| 22 ClientView::ClientView(Widget* widget, View* contents_view) | |
| 23 : contents_view_(contents_view) { | |
| 24 } | |
| 25 | |
| 26 int ClientView::NonClientHitTest(const gfx::Point& point) { | |
| 27 return bounds().Contains(point) ? HTCLIENT : HTNOWHERE; | |
| 28 } | |
| 29 | |
| 30 DialogClientView* ClientView::AsDialogClientView() { | |
| 31 return NULL; | |
| 32 } | |
| 33 | |
| 34 const DialogClientView* ClientView::AsDialogClientView() const { | |
| 35 return NULL; | |
| 36 } | |
| 37 | |
| 38 bool ClientView::CanClose() { | |
| 39 return true; | |
| 40 } | |
| 41 | |
| 42 void ClientView::WidgetClosing() { | |
| 43 } | |
| 44 | |
| 45 /////////////////////////////////////////////////////////////////////////////// | |
| 46 // ClientView, View overrides: | |
| 47 | |
| 48 gfx::Size ClientView::GetPreferredSize() const { | |
| 49 // |contents_view_| is allowed to be NULL up until the point where this view | |
| 50 // is attached to a Container. | |
| 51 return contents_view_ ? contents_view_->GetPreferredSize() : gfx::Size(); | |
| 52 } | |
| 53 | |
| 54 gfx::Size ClientView::GetMaximumSize() const { | |
| 55 // |contents_view_| is allowed to be NULL up until the point where this view | |
| 56 // is attached to a Container. | |
| 57 return contents_view_ ? contents_view_->GetMaximumSize() : gfx::Size(); | |
| 58 } | |
| 59 | |
| 60 gfx::Size ClientView::GetMinimumSize() const { | |
| 61 // |contents_view_| is allowed to be NULL up until the point where this view | |
| 62 // is attached to a Container. | |
| 63 return contents_view_ ? contents_view_->GetMinimumSize() : gfx::Size(); | |
| 64 } | |
| 65 | |
| 66 void ClientView::Layout() { | |
| 67 // |contents_view_| is allowed to be NULL up until the point where this view | |
| 68 // is attached to a Container. | |
| 69 if (contents_view_) | |
| 70 contents_view_->SetBounds(0, 0, width(), height()); | |
| 71 } | |
| 72 | |
| 73 const char* ClientView::GetClassName() const { | |
| 74 return kViewClassName; | |
| 75 } | |
| 76 | |
| 77 void ClientView::GetAccessibleState(ui::AXViewState* state) { | |
| 78 state->role = ui::AX_ROLE_CLIENT; | |
| 79 } | |
| 80 | |
| 81 void ClientView::OnBoundsChanged(const gfx::Rect& previous_bounds) { | |
| 82 // Overridden to do nothing. The NonClientView manually calls Layout on the | |
| 83 // ClientView when it is itself laid out, see comment in | |
| 84 // NonClientView::Layout. | |
| 85 } | |
| 86 | |
| 87 void ClientView::ViewHierarchyChanged( | |
| 88 const ViewHierarchyChangedDetails& details) { | |
| 89 if (details.is_add && details.child == this) { | |
| 90 DCHECK(GetWidget()); | |
| 91 DCHECK(contents_view_); // |contents_view_| must be valid now! | |
| 92 // Insert |contents_view_| at index 0 so it is first in the focus chain. | |
| 93 // (the OK/Cancel buttons are inserted before contents_view_) | |
| 94 AddChildViewAt(contents_view_, 0); | |
| 95 } | |
| 96 } | |
| 97 | |
| 98 } // namespace views | |
| OLD | NEW |