OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first. | 5 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first. |
6 | 6 |
7 #include "ui/views/view.h" | 7 #include "ui/views/view.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cmath> | 10 #include <cmath> |
(...skipping 21 matching lines...) Expand all Loading... |
32 #include "ui/gfx/geometry/point3_f.h" | 32 #include "ui/gfx/geometry/point3_f.h" |
33 #include "ui/gfx/geometry/point_conversions.h" | 33 #include "ui/gfx/geometry/point_conversions.h" |
34 #include "ui/gfx/interpolated_transform.h" | 34 #include "ui/gfx/interpolated_transform.h" |
35 #include "ui/gfx/path.h" | 35 #include "ui/gfx/path.h" |
36 #include "ui/gfx/scoped_canvas.h" | 36 #include "ui/gfx/scoped_canvas.h" |
37 #include "ui/gfx/screen.h" | 37 #include "ui/gfx/screen.h" |
38 #include "ui/gfx/skia_util.h" | 38 #include "ui/gfx/skia_util.h" |
39 #include "ui/gfx/transform.h" | 39 #include "ui/gfx/transform.h" |
40 #include "ui/native_theme/native_theme.h" | 40 #include "ui/native_theme/native_theme.h" |
41 #include "ui/views/accessibility/native_view_accessibility.h" | 41 #include "ui/views/accessibility/native_view_accessibility.h" |
| 42 #include "ui/views/animation/ink_drop_delegate.h" |
42 #include "ui/views/background.h" | 43 #include "ui/views/background.h" |
43 #include "ui/views/border.h" | 44 #include "ui/views/border.h" |
44 #include "ui/views/context_menu_controller.h" | 45 #include "ui/views/context_menu_controller.h" |
45 #include "ui/views/drag_controller.h" | 46 #include "ui/views/drag_controller.h" |
46 #include "ui/views/focus/view_storage.h" | 47 #include "ui/views/focus/view_storage.h" |
47 #include "ui/views/layout/layout_manager.h" | 48 #include "ui/views/layout/layout_manager.h" |
48 #include "ui/views/views_delegate.h" | 49 #include "ui/views/views_delegate.h" |
49 #include "ui/views/widget/native_widget_private.h" | 50 #include "ui/views/widget/native_widget_private.h" |
50 #include "ui/views/widget/root_view.h" | 51 #include "ui/views/widget/root_view.h" |
51 #include "ui/views/widget/tooltip_manager.h" | 52 #include "ui/views/widget/tooltip_manager.h" |
(...skipping 23 matching lines...) Expand all Loading... |
75 const int kDefaultVerticalDragThreshold = 8; | 76 const int kDefaultVerticalDragThreshold = 8; |
76 | 77 |
77 // Returns the top view in |view|'s hierarchy. | 78 // Returns the top view in |view|'s hierarchy. |
78 const View* GetHierarchyRoot(const View* view) { | 79 const View* GetHierarchyRoot(const View* view) { |
79 const View* root = view; | 80 const View* root = view; |
80 while (root && root->parent()) | 81 while (root && root->parent()) |
81 root = root->parent(); | 82 root = root->parent(); |
82 return root; | 83 return root; |
83 } | 84 } |
84 | 85 |
| 86 // A stub InkDropDelegate implementation that always exists and does nothing. |
| 87 // A real InkDropDelegate descendant can be returned by a View's descendant via |
| 88 // GetInkDropDelegate(). |
| 89 class InkDropDelegateStub : public InkDropDelegate { |
| 90 public: |
| 91 InkDropDelegateStub() {} |
| 92 ~InkDropDelegateStub() override {} |
| 93 |
| 94 // InkDropDelegate: |
| 95 void SetInkDropSize(int large_size, |
| 96 int large_corner_radius, |
| 97 int small_size, |
| 98 int small_corner_radius) override {} |
| 99 void OnLayout() override {} |
| 100 void OnAction(InkDropState state) override {} |
| 101 |
| 102 private: |
| 103 DISALLOW_COPY_AND_ASSIGN(InkDropDelegateStub); |
| 104 }; |
| 105 |
| 106 static InkDropDelegateStub ink_drop_delegate_stub; |
| 107 |
85 } // namespace | 108 } // namespace |
86 | 109 |
87 // static | 110 // static |
88 const char View::kViewClassName[] = "View"; | 111 const char View::kViewClassName[] = "View"; |
89 | 112 |
90 //////////////////////////////////////////////////////////////////////////////// | 113 //////////////////////////////////////////////////////////////////////////////// |
91 // View, public: | 114 // View, public: |
92 | 115 |
93 // Creation and lifetime ------------------------------------------------------- | 116 // Creation and lifetime ------------------------------------------------------- |
94 | 117 |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 // just propagate the Layout() call down the hierarchy, so whoever receives | 535 // just propagate the Layout() call down the hierarchy, so whoever receives |
513 // the call can take appropriate action. | 536 // the call can take appropriate action. |
514 for (int i = 0, count = child_count(); i < count; ++i) { | 537 for (int i = 0, count = child_count(); i < count; ++i) { |
515 View* child = child_at(i); | 538 View* child = child_at(i); |
516 if (child->needs_layout_ || !layout_manager_.get()) { | 539 if (child->needs_layout_ || !layout_manager_.get()) { |
517 TRACE_EVENT1("views", "View::Layout", "class", child->GetClassName()); | 540 TRACE_EVENT1("views", "View::Layout", "class", child->GetClassName()); |
518 child->needs_layout_ = false; | 541 child->needs_layout_ = false; |
519 child->Layout(); | 542 child->Layout(); |
520 } | 543 } |
521 } | 544 } |
| 545 |
| 546 GetInkDropDelegate()->OnLayout(); |
522 } | 547 } |
523 | 548 |
524 void View::InvalidateLayout() { | 549 void View::InvalidateLayout() { |
525 // Always invalidate up. This is needed to handle the case of us already being | 550 // Always invalidate up. This is needed to handle the case of us already being |
526 // valid, but not our parent. | 551 // valid, but not our parent. |
527 needs_layout_ = true; | 552 needs_layout_ = true; |
528 if (parent_) | 553 if (parent_) |
529 parent_->InvalidateLayout(); | 554 parent_->InvalidateLayout(); |
530 } | 555 } |
531 | 556 |
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 } | 1283 } |
1259 | 1284 |
1260 void View::OnDragExited() { | 1285 void View::OnDragExited() { |
1261 } | 1286 } |
1262 | 1287 |
1263 int View::OnPerformDrop(const ui::DropTargetEvent& event) { | 1288 int View::OnPerformDrop(const ui::DropTargetEvent& event) { |
1264 return ui::DragDropTypes::DRAG_NONE; | 1289 return ui::DragDropTypes::DRAG_NONE; |
1265 } | 1290 } |
1266 | 1291 |
1267 void View::OnDragDone() { | 1292 void View::OnDragDone() { |
| 1293 GetInkDropDelegate()->OnAction(InkDropState::HIDDEN); |
1268 } | 1294 } |
1269 | 1295 |
1270 // static | 1296 // static |
1271 bool View::ExceededDragThreshold(const gfx::Vector2d& delta) { | 1297 bool View::ExceededDragThreshold(const gfx::Vector2d& delta) { |
1272 return (abs(delta.x()) > GetHorizontalDragThreshold() || | 1298 return (abs(delta.x()) > GetHorizontalDragThreshold() || |
1273 abs(delta.y()) > GetVerticalDragThreshold()); | 1299 abs(delta.y()) > GetVerticalDragThreshold()); |
1274 } | 1300 } |
1275 | 1301 |
1276 // Accessibility---------------------------------------------------------------- | 1302 // Accessibility---------------------------------------------------------------- |
1277 | 1303 |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1523 // Iterate backwards through the children so that a child with a layer | 1549 // Iterate backwards through the children so that a child with a layer |
1524 // which is further to the back is stacked above one which is further to | 1550 // which is further to the back is stacked above one which is further to |
1525 // the front. | 1551 // the front. |
1526 for (Views::reverse_iterator it(children_.rbegin()); | 1552 for (Views::reverse_iterator it(children_.rbegin()); |
1527 it != children_.rend(); ++it) { | 1553 it != children_.rend(); ++it) { |
1528 (*it)->ReorderChildLayers(parent_layer); | 1554 (*it)->ReorderChildLayers(parent_layer); |
1529 } | 1555 } |
1530 } | 1556 } |
1531 } | 1557 } |
1532 | 1558 |
| 1559 // Animations ---------------------------------------------------------------- |
| 1560 |
| 1561 InkDropDelegate* View::GetInkDropDelegate() const { |
| 1562 return &ink_drop_delegate_stub; |
| 1563 } |
| 1564 |
1533 // Input ----------------------------------------------------------------------- | 1565 // Input ----------------------------------------------------------------------- |
1534 | 1566 |
1535 View::DragInfo* View::GetDragInfo() { | 1567 View::DragInfo* View::GetDragInfo() { |
1536 return parent_ ? parent_->GetDragInfo() : NULL; | 1568 return parent_ ? parent_->GetDragInfo() : NULL; |
1537 } | 1569 } |
1538 | 1570 |
1539 // Focus ----------------------------------------------------------------------- | 1571 // Focus ----------------------------------------------------------------------- |
1540 | 1572 |
1541 void View::OnFocus() { | 1573 void View::OnFocus() { |
1542 // TODO(beng): Investigate whether it's possible for us to move this to | 1574 // TODO(beng): Investigate whether it's possible for us to move this to |
(...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2365 // Message the RootView to do the drag and drop. That way if we're removed | 2397 // Message the RootView to do the drag and drop. That way if we're removed |
2366 // the RootView can detect it and avoid calling us back. | 2398 // the RootView can detect it and avoid calling us back. |
2367 gfx::Point widget_location(event.location()); | 2399 gfx::Point widget_location(event.location()); |
2368 ConvertPointToWidget(this, &widget_location); | 2400 ConvertPointToWidget(this, &widget_location); |
2369 widget->RunShellDrag(this, data, widget_location, drag_operations, source); | 2401 widget->RunShellDrag(this, data, widget_location, drag_operations, source); |
2370 // WARNING: we may have been deleted. | 2402 // WARNING: we may have been deleted. |
2371 return true; | 2403 return true; |
2372 } | 2404 } |
2373 | 2405 |
2374 } // namespace views | 2406 } // namespace views |
OLD | NEW |