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 #include "views/view.h" | 5 #include "views/view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
| 9 #include "base/debug/trace_event.h" |
9 #include "base/logging.h" | 10 #include "base/logging.h" |
10 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
11 #include "base/message_loop.h" | 12 #include "base/message_loop.h" |
12 #include "base/utf_string_conversions.h" | 13 #include "base/utf_string_conversions.h" |
13 #include "third_party/skia/include/core/SkRect.h" | 14 #include "third_party/skia/include/core/SkRect.h" |
14 #include "ui/base/accessibility/accessibility_types.h" | 15 #include "ui/base/accessibility/accessibility_types.h" |
15 #include "ui/base/dragdrop/drag_drop_types.h" | 16 #include "ui/base/dragdrop/drag_drop_types.h" |
16 #include "ui/gfx/canvas_skia.h" | 17 #include "ui/gfx/canvas_skia.h" |
17 #include "ui/gfx/compositor/compositor.h" | 18 #include "ui/gfx/compositor/compositor.h" |
18 #include "ui/gfx/compositor/layer.h" | 19 #include "ui/gfx/compositor/layer.h" |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 | 98 |
98 // Creation and lifetime ------------------------------------------------------- | 99 // Creation and lifetime ------------------------------------------------------- |
99 | 100 |
100 View::View() | 101 View::View() |
101 : parent_owned_(true), | 102 : parent_owned_(true), |
102 id_(0), | 103 id_(0), |
103 group_(-1), | 104 group_(-1), |
104 parent_(NULL), | 105 parent_(NULL), |
105 visible_(true), | 106 visible_(true), |
106 enabled_(true), | 107 enabled_(true), |
| 108 painting_enabled_(true), |
107 registered_for_visible_bounds_notification_(false), | 109 registered_for_visible_bounds_notification_(false), |
108 clip_x_(0.0), | 110 clip_x_(0.0), |
109 clip_y_(0.0), | 111 clip_y_(0.0), |
110 needs_layout_(true), | 112 needs_layout_(true), |
111 flip_canvas_on_paint_for_rtl_ui_(false), | 113 flip_canvas_on_paint_for_rtl_ui_(false), |
112 accelerator_registration_delayed_(false), | 114 accelerator_registration_delayed_(false), |
113 accelerator_focus_manager_(NULL), | 115 accelerator_focus_manager_(NULL), |
114 registered_accelerator_count_(0), | 116 registered_accelerator_count_(0), |
115 next_focusable_view_(NULL), | 117 next_focusable_view_(NULL), |
116 previous_focusable_view_(NULL), | 118 previous_focusable_view_(NULL), |
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
673 return x_rect; | 675 return x_rect; |
674 } | 676 } |
675 | 677 |
676 // Painting -------------------------------------------------------------------- | 678 // Painting -------------------------------------------------------------------- |
677 | 679 |
678 void View::SchedulePaint() { | 680 void View::SchedulePaint() { |
679 SchedulePaintInRect(GetLocalBounds()); | 681 SchedulePaintInRect(GetLocalBounds()); |
680 } | 682 } |
681 | 683 |
682 void View::SchedulePaintInRect(const gfx::Rect& rect) { | 684 void View::SchedulePaintInRect(const gfx::Rect& rect) { |
683 if (!IsVisible()) | 685 if (!IsVisible() || !painting_enabled_) |
684 return; | 686 return; |
685 | 687 |
686 MarkLayerDirty(); | 688 MarkLayerDirty(); |
687 SchedulePaintInternal(rect); | 689 SchedulePaintInternal(rect); |
688 } | 690 } |
689 | 691 |
690 void View::Paint(gfx::Canvas* canvas) { | 692 void View::Paint(gfx::Canvas* canvas) { |
691 if (!IsVisible()) | 693 TRACE_EVENT0("View", "Paint"); |
| 694 if (!IsVisible() || !painting_enabled_) |
692 return; | 695 return; |
693 | 696 |
694 ScopedCanvas scoped_canvas(NULL); | 697 ScopedCanvas scoped_canvas(NULL); |
695 scoped_ptr<gfx::Canvas> layer_canvas; | 698 scoped_ptr<gfx::Canvas> layer_canvas; |
696 gfx::Rect layer_rect; | 699 gfx::Rect layer_rect; |
697 | 700 |
698 if (layer()) { | 701 if (layer()) { |
699 gfx::Rect dirty_rect; | 702 gfx::Rect dirty_rect; |
700 if (!layer_helper_->clip_rect().IsEmpty()) { | 703 if (!layer_helper_->clip_rect().IsEmpty()) { |
701 dirty_rect = layer_helper_->clip_rect(); | 704 dirty_rect = layer_helper_->clip_rect(); |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1161 if (layer()) { | 1164 if (layer()) { |
1162 OnWillCompositeLayer(); | 1165 OnWillCompositeLayer(); |
1163 layer()->Draw(); | 1166 layer()->Draw(); |
1164 } | 1167 } |
1165 | 1168 |
1166 for (int i = 0, count = child_count(); i < count; ++i) | 1169 for (int i = 0, count = child_count(); i < count; ++i) |
1167 child_at(i)->PaintComposite(); | 1170 child_at(i)->PaintComposite(); |
1168 } | 1171 } |
1169 | 1172 |
1170 void View::SchedulePaintInternal(const gfx::Rect& rect) { | 1173 void View::SchedulePaintInternal(const gfx::Rect& rect) { |
1171 if (parent_ && parent_->IsVisible()) { | 1174 if (parent_ && parent_->IsVisible() && painting_enabled_) { |
1172 // Translate the requested paint rect to the parent's coordinate system | 1175 // Translate the requested paint rect to the parent's coordinate system |
1173 // then pass this notification up to the parent. | 1176 // then pass this notification up to the parent. |
1174 parent_->SchedulePaintInternal(ConvertRectToParent(rect)); | 1177 parent_->SchedulePaintInternal(ConvertRectToParent(rect)); |
1175 } | 1178 } |
1176 } | 1179 } |
1177 | 1180 |
1178 void View::PaintToLayer(const gfx::Rect& dirty_region) { | 1181 void View::PaintToLayer(const gfx::Rect& dirty_region) { |
1179 if (!IsVisible()) | 1182 if (!IsVisible()) |
1180 return; | 1183 return; |
1181 | 1184 |
(...skipping 881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2063 result.append(child_at(i)->PrintViewGraph(false)); | 2066 result.append(child_at(i)->PrintViewGraph(false)); |
2064 | 2067 |
2065 if (first) | 2068 if (first) |
2066 result.append("}\n"); | 2069 result.append("}\n"); |
2067 | 2070 |
2068 return result; | 2071 return result; |
2069 } | 2072 } |
2070 #endif | 2073 #endif |
2071 | 2074 |
2072 } // namespace views | 2075 } // namespace views |
OLD | NEW |