| 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 #ifndef UI_VIEWS_VIEW_H_ | 5 #ifndef UI_VIEWS_VIEW_H_ |
| 6 #define UI_VIEWS_VIEW_H_ | 6 #define UI_VIEWS_VIEW_H_ |
| 7 | 7 |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| 11 #include <string> | 11 #include <string> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "base/compiler_specific.h" | 14 #include "base/compiler_specific.h" |
| 15 #include "base/i18n/rtl.h" | 15 #include "base/i18n/rtl.h" |
| 16 #include "base/logging.h" | 16 #include "base/logging.h" |
| 17 #include "base/memory/scoped_ptr.h" | 17 #include "base/memory/scoped_ptr.h" |
| 18 #include "base/memory/weak_ptr.h" |
| 18 #include "build/build_config.h" | 19 #include "build/build_config.h" |
| 19 #include "ui/base/accelerators/accelerator.h" | 20 #include "ui/base/accelerators/accelerator.h" |
| 20 #include "ui/base/accessibility/accessibility_types.h" | 21 #include "ui/base/accessibility/accessibility_types.h" |
| 21 #include "ui/base/dragdrop/drag_drop_types.h" | 22 #include "ui/base/dragdrop/drag_drop_types.h" |
| 22 #include "ui/base/dragdrop/os_exchange_data.h" | 23 #include "ui/base/dragdrop/os_exchange_data.h" |
| 23 #include "ui/base/events/event.h" | 24 #include "ui/base/events/event.h" |
| 24 #include "ui/base/events/event_target.h" | 25 #include "ui/base/events/event_target.h" |
| 25 #include "ui/compositor/layer_delegate.h" | 26 #include "ui/compositor/layer_delegate.h" |
| 26 #include "ui/compositor/layer_owner.h" | 27 #include "ui/compositor/layer_owner.h" |
| 27 #include "ui/gfx/native_widget_types.h" | 28 #include "ui/gfx/native_widget_types.h" |
| (...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 // Whether the press may generate a drag. | 969 // Whether the press may generate a drag. |
| 969 bool possible_drag; | 970 bool possible_drag; |
| 970 | 971 |
| 971 // Coordinates of the mouse press. | 972 // Coordinates of the mouse press. |
| 972 gfx::Point start_pt; | 973 gfx::Point start_pt; |
| 973 }; | 974 }; |
| 974 | 975 |
| 975 // Size and disposition ------------------------------------------------------ | 976 // Size and disposition ------------------------------------------------------ |
| 976 | 977 |
| 977 // Override to be notified when the bounds of the view have changed. | 978 // Override to be notified when the bounds of the view have changed. |
| 978 virtual void OnBoundsChanged(const gfx::Rect& previous_bounds); | 979 virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) {} |
| 979 | 980 |
| 980 // Called when the preferred size of a child view changed. This gives the | 981 // Called when the preferred size of a child view changed. This gives the |
| 981 // parent an opportunity to do a fresh layout if that makes sense. | 982 // parent an opportunity to do a fresh layout if that makes sense. |
| 982 virtual void ChildPreferredSizeChanged(View* child) {} | 983 virtual void ChildPreferredSizeChanged(View* child); |
| 983 | 984 |
| 984 // Called when the visibility of a child view changed. This gives the parent | 985 // Called when the visibility of a child view changed. This gives the parent |
| 985 // an opportunity to do a fresh layout if that makes sense. | 986 // an opportunity to do a fresh layout if that makes sense. |
| 986 virtual void ChildVisibilityChanged(View* child) {} | 987 virtual void ChildVisibilityChanged(View* child) {} |
| 987 | 988 |
| 988 // Invalidates the layout and calls ChildPreferredSizeChanged on the parent | 989 // Invalidates the layout and calls ChildPreferredSizeChanged on the parent |
| 989 // if there is one. Be sure to call View::PreferredSizeChanged when | 990 // if there is one. Be sure to call View::PreferredSizeChanged when |
| 990 // overriding such that the layout is properly invalidated. | 991 // overriding such that the layout is properly invalidated. |
| 991 virtual void PreferredSizeChanged(); | 992 virtual void PreferredSizeChanged(); |
| 992 | 993 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1191 // the views hierarchy. The above function gives the class the flexibility to | 1192 // the views hierarchy. The above function gives the class the flexibility to |
| 1192 // decide which object should be used to obtain the children, but this | 1193 // decide which object should be used to obtain the children, but this |
| 1193 // function makes the decision explicit. | 1194 // function makes the decision explicit. |
| 1194 std::string DoPrintViewGraph(bool first, View* view_with_children); | 1195 std::string DoPrintViewGraph(bool first, View* view_with_children); |
| 1195 #endif | 1196 #endif |
| 1196 | 1197 |
| 1197 private: | 1198 private: |
| 1198 friend class internal::PostEventDispatchHandler; | 1199 friend class internal::PostEventDispatchHandler; |
| 1199 friend class internal::RootView; | 1200 friend class internal::RootView; |
| 1200 friend class FocusManager; | 1201 friend class FocusManager; |
| 1202 friend class LayoutManager; |
| 1201 friend class Widget; | 1203 friend class Widget; |
| 1202 | 1204 |
| 1203 // Painting ----------------------------------------------------------------- | 1205 // Painting ----------------------------------------------------------------- |
| 1204 | 1206 |
| 1205 enum SchedulePaintType { | 1207 enum SchedulePaintType { |
| 1206 // Indicates the size is the same (only the origin changed). | 1208 // Indicates the size is the same (only the origin changed). |
| 1207 SCHEDULE_PAINT_SIZE_SAME, | 1209 SCHEDULE_PAINT_SIZE_SAME, |
| 1208 | 1210 |
| 1209 // Indicates the size changed (and possibly the origin). | 1211 // Indicates the size changed (and possibly the origin). |
| 1210 SCHEDULE_PAINT_SIZE_CHANGED | 1212 SCHEDULE_PAINT_SIZE_CHANGED |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1251 // Takes care of registering/unregistering accelerators if | 1253 // Takes care of registering/unregistering accelerators if |
| 1252 // |register_accelerators| true and calls ViewHierarchyChanged(). | 1254 // |register_accelerators| true and calls ViewHierarchyChanged(). |
| 1253 void ViewHierarchyChangedImpl(bool register_accelerators, | 1255 void ViewHierarchyChangedImpl(bool register_accelerators, |
| 1254 const ViewHierarchyChangedDetails& details); | 1256 const ViewHierarchyChangedDetails& details); |
| 1255 | 1257 |
| 1256 // Invokes OnNativeThemeChanged() on this and all descendants. | 1258 // Invokes OnNativeThemeChanged() on this and all descendants. |
| 1257 void PropagateNativeThemeChanged(const ui::NativeTheme* theme); | 1259 void PropagateNativeThemeChanged(const ui::NativeTheme* theme); |
| 1258 | 1260 |
| 1259 // Size and disposition ------------------------------------------------------ | 1261 // Size and disposition ------------------------------------------------------ |
| 1260 | 1262 |
| 1263 // FIXME |
| 1264 void LayoutIfNeeded(); |
| 1265 |
| 1261 // Call VisibilityChanged() recursively for all children. | 1266 // Call VisibilityChanged() recursively for all children. |
| 1262 void PropagateVisibilityNotifications(View* from, bool is_visible); | 1267 void PropagateVisibilityNotifications(View* from, bool is_visible); |
| 1263 | 1268 |
| 1264 // Registers/unregisters accelerators as necessary and calls | 1269 // Registers/unregisters accelerators as necessary and calls |
| 1265 // VisibilityChanged(). | 1270 // VisibilityChanged(). |
| 1266 void VisibilityChangedImpl(View* starting_from, bool is_visible); | 1271 void VisibilityChangedImpl(View* starting_from, bool is_visible); |
| 1267 | 1272 |
| 1268 // Responsible for propagating bounds change notifications to relevant | 1273 // Responsible for propagating bounds change notifications to relevant |
| 1269 // views. | 1274 // views. |
| 1270 void BoundsChanged(const gfx::Rect& previous_bounds); | 1275 void BoundsChanged(const gfx::Rect& previous_bounds); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1387 | 1392 |
| 1388 // Starts a drag and drop operation originating from this view. This invokes | 1393 // Starts a drag and drop operation originating from this view. This invokes |
| 1389 // WriteDragData to write the data and GetDragOperations to determine the | 1394 // WriteDragData to write the data and GetDragOperations to determine the |
| 1390 // supported drag operations. When done, OnDragDone is invoked. |press_pt| is | 1395 // supported drag operations. When done, OnDragDone is invoked. |press_pt| is |
| 1391 // in the view's coordinate system. | 1396 // in the view's coordinate system. |
| 1392 // Returns true if a drag was started. | 1397 // Returns true if a drag was started. |
| 1393 bool DoDrag(const ui::LocatedEvent& event, | 1398 bool DoDrag(const ui::LocatedEvent& event, |
| 1394 const gfx::Point& press_pt, | 1399 const gfx::Point& press_pt, |
| 1395 ui::DragDropTypes::DragEventSource source); | 1400 ui::DragDropTypes::DragEventSource source); |
| 1396 | 1401 |
| 1402 |
| 1397 ////////////////////////////////////////////////////////////////////////////// | 1403 ////////////////////////////////////////////////////////////////////////////// |
| 1398 | 1404 |
| 1399 // Creation and lifetime ----------------------------------------------------- | 1405 // Creation and lifetime ----------------------------------------------------- |
| 1400 | 1406 |
| 1401 // False if this View is owned by its parent - i.e. it will be deleted by its | 1407 // False if this View is owned by its parent - i.e. it will be deleted by its |
| 1402 // parent during its parents destruction. False is the default. | 1408 // parent during its parents destruction. False is the default. |
| 1403 bool owned_by_client_; | 1409 bool owned_by_client_; |
| 1404 | 1410 |
| 1411 base::WeakPtrFactory<View> weak_ptr_factory_; |
| 1412 |
| 1405 // Attributes ---------------------------------------------------------------- | 1413 // Attributes ---------------------------------------------------------------- |
| 1406 | 1414 |
| 1407 // The id of this View. Used to find this View. | 1415 // The id of this View. Used to find this View. |
| 1408 int id_; | 1416 int id_; |
| 1409 | 1417 |
| 1410 // The group of this view. Some view subclasses use this id to find other | 1418 // The group of this view. Some view subclasses use this id to find other |
| 1411 // views of the same group. For example radio button uses this information | 1419 // views of the same group. For example radio button uses this information |
| 1412 // to find other radio buttons. | 1420 // to find other radio buttons. |
| 1413 int group_; | 1421 int group_; |
| 1414 | 1422 |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1538 // Belongs to this view, but it's reference-counted on some platforms | 1546 // Belongs to this view, but it's reference-counted on some platforms |
| 1539 // so we can't use a scoped_ptr. It's dereferenced in the destructor. | 1547 // so we can't use a scoped_ptr. It's dereferenced in the destructor. |
| 1540 NativeViewAccessibility* native_view_accessibility_; | 1548 NativeViewAccessibility* native_view_accessibility_; |
| 1541 | 1549 |
| 1542 DISALLOW_COPY_AND_ASSIGN(View); | 1550 DISALLOW_COPY_AND_ASSIGN(View); |
| 1543 }; | 1551 }; |
| 1544 | 1552 |
| 1545 } // namespace views | 1553 } // namespace views |
| 1546 | 1554 |
| 1547 #endif // UI_VIEWS_VIEW_H_ | 1555 #endif // UI_VIEWS_VIEW_H_ |
| OLD | NEW |