Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 VIEWS_VIEW_H_ | 5 #ifndef VIEWS_VIEW_H_ |
| 6 #define VIEWS_VIEW_H_ | 6 #define VIEWS_VIEW_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 | 50 |
| 51 class Background; | 51 class Background; |
| 52 class Border; | 52 class Border; |
| 53 class ContextMenuController; | 53 class ContextMenuController; |
| 54 class DragController; | 54 class DragController; |
| 55 class FocusManager; | 55 class FocusManager; |
| 56 class FocusTraversable; | 56 class FocusTraversable; |
| 57 class InputMethod; | 57 class InputMethod; |
| 58 class LayerPropertySetter; | 58 class LayerPropertySetter; |
| 59 class LayoutManager; | 59 class LayoutManager; |
| 60 class PaintListener; | |
| 60 class ScrollView; | 61 class ScrollView; |
| 61 class TextInputClient; | 62 class TextInputClient; |
| 62 class Widget; | 63 class Widget; |
| 63 | 64 |
| 64 namespace internal { | 65 namespace internal { |
| 65 class NativeWidgetView; | 66 class NativeWidgetView; |
| 66 class RootView; | 67 class RootView; |
| 67 } | 68 } |
| 68 | 69 |
| 69 ///////////////////////////////////////////////////////////////////////////// | 70 ///////////////////////////////////////////////////////////////////////////// |
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 469 Background* background() { return background_.get(); } | 470 Background* background() { return background_.get(); } |
| 470 | 471 |
| 471 // The border object is owned by this object and may be NULL. | 472 // The border object is owned by this object and may be NULL. |
| 472 void set_border(Border* b) { border_.reset(b); } | 473 void set_border(Border* b) { border_.reset(b); } |
| 473 const Border* border() const { return border_.get(); } | 474 const Border* border() const { return border_.get(); } |
| 474 Border* border() { return border_.get(); } | 475 Border* border() { return border_.get(); } |
| 475 | 476 |
| 476 // Get the theme provider from the parent widget. | 477 // Get the theme provider from the parent widget. |
| 477 virtual ui::ThemeProvider* GetThemeProvider() const; | 478 virtual ui::ThemeProvider* GetThemeProvider() const; |
| 478 | 479 |
| 480 // Add/Remove listeners that are notified when painting and compositing end. | |
| 481 // The view does not own the listeners, and it is the responsibility of the | |
| 482 // listener to remove itself when it is done listening. | |
| 483 void AddPaintListener(PaintListener* listener); | |
| 484 void RemovePaintListener(PaintListener* listener); | |
| 485 | |
| 479 // RTL painting -------------------------------------------------------------- | 486 // RTL painting -------------------------------------------------------------- |
| 480 | 487 |
| 481 // This method determines whether the gfx::Canvas object passed to | 488 // This method determines whether the gfx::Canvas object passed to |
| 482 // View::Paint() needs to be transformed such that anything drawn on the | 489 // View::Paint() needs to be transformed such that anything drawn on the |
| 483 // canvas object during View::Paint() is flipped horizontally. | 490 // canvas object during View::Paint() is flipped horizontally. |
| 484 // | 491 // |
| 485 // By default, this function returns false (which is the initial value of | 492 // By default, this function returns false (which is the initial value of |
| 486 // |flip_canvas_on_paint_for_rtl_ui_|). View subclasses that need to paint on | 493 // |flip_canvas_on_paint_for_rtl_ui_|). View subclasses that need to paint on |
| 487 // a flipped gfx::Canvas when the UI layout is right-to-left need to call | 494 // a flipped gfx::Canvas when the UI layout is right-to-left need to call |
| 488 // EnableCanvasFlippingForRTLUI(). | 495 // EnableCanvasFlippingForRTLUI(). |
| (...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1097 // used by the public static method ExceededDragThreshold(). | 1104 // used by the public static method ExceededDragThreshold(). |
| 1098 static int GetHorizontalDragThreshold(); | 1105 static int GetHorizontalDragThreshold(); |
| 1099 static int GetVerticalDragThreshold(); | 1106 static int GetVerticalDragThreshold(); |
| 1100 | 1107 |
| 1101 private: | 1108 private: |
| 1102 friend class internal::NativeWidgetView; | 1109 friend class internal::NativeWidgetView; |
| 1103 friend class internal::RootView; | 1110 friend class internal::RootView; |
| 1104 friend class FocusManager; | 1111 friend class FocusManager; |
| 1105 friend class ViewStorage; | 1112 friend class ViewStorage; |
| 1106 friend class Widget; | 1113 friend class Widget; |
| 1114 friend class PaintLock; | |
| 1107 | 1115 |
| 1108 // Used to track a drag. RootView passes this into | 1116 // Used to track a drag. RootView passes this into |
| 1109 // ProcessMousePressed/Dragged. | 1117 // ProcessMousePressed/Dragged. |
| 1110 struct DragInfo { | 1118 struct DragInfo { |
| 1111 // Sets possible_drag to false and start_x/y to 0. This is invoked by | 1119 // Sets possible_drag to false and start_x/y to 0. This is invoked by |
| 1112 // RootView prior to invoke ProcessMousePressed. | 1120 // RootView prior to invoke ProcessMousePressed. |
| 1113 void Reset(); | 1121 void Reset(); |
| 1114 | 1122 |
| 1115 // Sets possible_drag to true and start_pt to the specified point. | 1123 // Sets possible_drag to true and start_pt to the specified point. |
| 1116 // This is invoked by the target view if it detects the press may generate | 1124 // This is invoked by the target view if it detects the press may generate |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1222 bool ConvertPointForAncestor(const View* ancestor, gfx::Point* point) const; | 1230 bool ConvertPointForAncestor(const View* ancestor, gfx::Point* point) const; |
| 1223 | 1231 |
| 1224 // Convert a point in the ancestor's coordinate system to the view's | 1232 // Convert a point in the ancestor's coordinate system to the view's |
| 1225 // coordinate system using necessary transformations. Returns whether the | 1233 // coordinate system using necessary transformations. Returns whether the |
| 1226 // point was successfully from the ancestor's coordinate system to the view's | 1234 // point was successfully from the ancestor's coordinate system to the view's |
| 1227 // coordinate system. | 1235 // coordinate system. |
| 1228 bool ConvertPointFromAncestor(const View* ancestor, gfx::Point* point) const; | 1236 bool ConvertPointFromAncestor(const View* ancestor, gfx::Point* point) const; |
| 1229 | 1237 |
| 1230 // Accelerated painting ------------------------------------------------------ | 1238 // Accelerated painting ------------------------------------------------------ |
| 1231 | 1239 |
| 1240 // Disables painting during time-critical operations. Used by PaintLock. | |
| 1241 void set_painting_enabled(bool enabled) { painting_enabled_ = enabled; } | |
| 1242 | |
| 1232 // Returns true if this view should paint to layer. | 1243 // Returns true if this view should paint to layer. |
| 1233 bool ShouldPaintToLayer() const; | 1244 bool ShouldPaintToLayer() const; |
| 1234 | 1245 |
| 1235 // Creates the layer and related fields for this view. | 1246 // Creates the layer and related fields for this view. |
| 1236 void CreateLayer(); | 1247 void CreateLayer(); |
| 1237 | 1248 |
| 1238 // Reparents any descendant layer to our current layer parent and destroys | 1249 // Reparents any descendant layer to our current layer parent and destroys |
| 1239 // this views layer. | 1250 // this views layer. |
| 1240 void DestroyLayerAndReparent(); | 1251 void DestroyLayerAndReparent(); |
| 1241 | 1252 |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1346 | 1357 |
| 1347 // This View's bounds in the parent coordinate system. | 1358 // This View's bounds in the parent coordinate system. |
| 1348 gfx::Rect bounds_; | 1359 gfx::Rect bounds_; |
| 1349 | 1360 |
| 1350 // Whether this view is visible. | 1361 // Whether this view is visible. |
| 1351 bool visible_; | 1362 bool visible_; |
| 1352 | 1363 |
| 1353 // Whether this view is enabled. | 1364 // Whether this view is enabled. |
| 1354 bool enabled_; | 1365 bool enabled_; |
| 1355 | 1366 |
| 1367 // Whether this view is painting. | |
| 1368 bool painting_enabled_; | |
| 1369 | |
| 1356 // Whether or not RegisterViewForVisibleBoundsNotification on the RootView | 1370 // Whether or not RegisterViewForVisibleBoundsNotification on the RootView |
| 1357 // has been invoked. | 1371 // has been invoked. |
| 1358 bool registered_for_visible_bounds_notification_; | 1372 bool registered_for_visible_bounds_notification_; |
| 1359 | 1373 |
| 1360 // List of descendants wanting notification when their visible bounds change. | 1374 // List of descendants wanting notification when their visible bounds change. |
| 1361 scoped_ptr<Views> descendants_to_notify_; | 1375 scoped_ptr<Views> descendants_to_notify_; |
| 1362 | 1376 |
| 1363 // Transformations ----------------------------------------------------------- | 1377 // Transformations ----------------------------------------------------------- |
| 1364 | 1378 |
| 1365 // Clipping parameters. skia transformation matrix does not give us clipping. | 1379 // Clipping parameters. skia transformation matrix does not give us clipping. |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 1377 scoped_ptr<LayoutManager> layout_manager_; | 1391 scoped_ptr<LayoutManager> layout_manager_; |
| 1378 | 1392 |
| 1379 // Painting ------------------------------------------------------------------ | 1393 // Painting ------------------------------------------------------------------ |
| 1380 | 1394 |
| 1381 // Background | 1395 // Background |
| 1382 scoped_ptr<Background> background_; | 1396 scoped_ptr<Background> background_; |
| 1383 | 1397 |
| 1384 // Border. | 1398 // Border. |
| 1385 scoped_ptr<Border> border_; | 1399 scoped_ptr<Border> border_; |
| 1386 | 1400 |
| 1401 // Listeners. These are not owned by the view. | |
| 1402 std::set<PaintListener*> paint_listeners_; | |
|
sky
2011/08/26 19:10:25
Use ObserverList (in base) for this.
I don't like
| |
| 1403 | |
| 1387 // RTL painting -------------------------------------------------------------- | 1404 // RTL painting -------------------------------------------------------------- |
| 1388 | 1405 |
| 1389 // Indicates whether or not the gfx::Canvas object passed to View::Paint() | 1406 // Indicates whether or not the gfx::Canvas object passed to View::Paint() |
| 1390 // is going to be flipped horizontally (using the appropriate transform) on | 1407 // is going to be flipped horizontally (using the appropriate transform) on |
| 1391 // right-to-left locales for this View. | 1408 // right-to-left locales for this View. |
| 1392 bool flip_canvas_on_paint_for_rtl_ui_; | 1409 bool flip_canvas_on_paint_for_rtl_ui_; |
| 1393 | 1410 |
| 1394 // Accelerated painting ------------------------------------------------------ | 1411 // Accelerated painting ------------------------------------------------------ |
| 1395 | 1412 |
| 1396 scoped_ptr<internal::LayerHelper> layer_helper_; | 1413 scoped_ptr<internal::LayerHelper> layer_helper_; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1440 #if defined(OS_WIN) | 1457 #if defined(OS_WIN) |
| 1441 scoped_refptr<NativeViewAccessibilityWin> native_view_accessibility_win_; | 1458 scoped_refptr<NativeViewAccessibilityWin> native_view_accessibility_win_; |
| 1442 #endif | 1459 #endif |
| 1443 | 1460 |
| 1444 DISALLOW_COPY_AND_ASSIGN(View); | 1461 DISALLOW_COPY_AND_ASSIGN(View); |
| 1445 }; | 1462 }; |
| 1446 | 1463 |
| 1447 } // namespace views | 1464 } // namespace views |
| 1448 | 1465 |
| 1449 #endif // VIEWS_VIEW_H_ | 1466 #endif // VIEWS_VIEW_H_ |
| OLD | NEW |