Index: views/view.cc |
=================================================================== |
--- views/view.cc (revision 107719) |
+++ views/view.cc (working copy) |
@@ -18,7 +18,6 @@ |
#include "ui/gfx/canvas_skia.h" |
#include "ui/gfx/compositor/compositor.h" |
#include "ui/gfx/compositor/layer.h" |
-#include "ui/gfx/compositor/layer_animator.h" |
#include "ui/gfx/interpolated_transform.h" |
#include "ui/gfx/path.h" |
#include "ui/gfx/point3.h" |
@@ -26,6 +25,7 @@ |
#include "views/background.h" |
#include "views/context_menu_controller.h" |
#include "views/drag_controller.h" |
+#include "views/layer_property_setter.h" |
#include "views/layout/layout_manager.h" |
#include "views/views_delegate.h" |
#include "views/widget/native_widget_private.h" |
@@ -424,7 +424,7 @@ |
void View::SetTransform(const ui::Transform& transform) { |
if (!transform.HasChange()) { |
if (layer()) { |
- layer()->SetTransform(transform); |
+ layer_property_setter_->SetTransform(layer(), transform); |
if (!paint_to_layer_) |
DestroyLayer(); |
} else { |
@@ -433,7 +433,7 @@ |
} else { |
if (!layer()) |
CreateLayer(); |
- layer()->SetTransform(transform); |
+ layer_property_setter_->SetTransform(layer(), transform); |
layer()->ScheduleDraw(); |
} |
} |
@@ -447,6 +447,20 @@ |
} |
} |
+void View::SetLayerPropertySetter(LayerPropertySetter* setter) { |
+ DCHECK(layer()); |
+ LayerPropertySetter* old_setter = layer_property_setter_.get(); |
+ if (!layer() || (old_setter && old_setter == setter)) |
+ return; |
+ if (!setter) |
+ setter = LayerPropertySetter::CreateDefaultSetter(); |
+ |
+ if (old_setter) |
+ old_setter->Uninstalled(layer()); |
+ layer_property_setter_.reset(setter); |
+ layer_property_setter_->Installed(layer()); |
+} |
+ |
// RTL positioning ------------------------------------------------------------- |
gfx::Rect View::GetMirroredBounds() const { |
@@ -1143,7 +1157,8 @@ |
void View::UpdateChildLayerBounds(const gfx::Point& offset) { |
if (layer()) { |
- layer()->SetBounds(gfx::Rect(offset.x(), offset.y(), width(), height())); |
+ layer_property_setter_->SetBounds(layer(), gfx::Rect(offset.x(), offset.y(), |
+ width(), height())); |
} else { |
for (int i = 0, count = child_count(); i < count; ++i) { |
gfx::Point new_offset(offset.x() + child_at(i)->x(), |
@@ -1159,7 +1174,7 @@ |
PaintCommon(canvas); |
} |
-void View::OnLayerAnimationEnded(const ui::LayerAnimationSequence* animation) { |
+void View::OnLayerAnimationEnded(const ui::Animation* animation) { |
} |
void View::ReorderLayers() { |
@@ -1584,9 +1599,9 @@ |
gfx::Point offset; |
parent_->CalculateOffsetToAncestorWithLayer(&offset, NULL); |
offset.Offset(x(), y()); |
- layer()->SetBounds(gfx::Rect(offset, size())); |
+ layer_property_setter_->SetBounds(layer(), gfx::Rect(offset, size())); |
} else { |
- layer()->SetBounds(bounds_); |
+ layer_property_setter_->SetBounds(layer(), bounds_); |
} |
// TODO(beng): this seems redundant with the SchedulePaint at the top of |
// this function. explore collapsing. |
@@ -1770,6 +1785,10 @@ |
layer_.reset(new ui::Layer(NULL)); |
layer_->set_delegate(this); |
+ if (layer_property_setter_.get()) |
+ layer_property_setter_->Installed(layer()); |
+ else |
+ SetLayerPropertySetter(NULL); |
UpdateParentLayers(); |
UpdateLayerVisibility(); |
@@ -1840,6 +1859,9 @@ |
new_parent->Add(children[i]); |
} |
+ if (layer_property_setter_.get()) |
+ layer_property_setter_->Uninstalled(layer()); |
+ |
layer_.reset(); |
if (new_parent) |