summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-01 17:22:43 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-01 17:22:43 +0000
commit8ea2c010bce666139b4dd4264f671f875fa92df9 (patch)
tree04df694326c5d476fae1a9234d326bd6c2e702b6 /views
parentb797b3d9bb65fa682dc79cdbaa8374e5faf36758 (diff)
downloadchromium_src-8ea2c010bce666139b4dd4264f671f875fa92df9.zip
chromium_src-8ea2c010bce666139b4dd4264f671f875fa92df9.tar.gz
chromium_src-8ea2c010bce666139b4dd4264f671f875fa92df9.tar.bz2
Fixes bug where transform wasn't reset on layer correctly.
BUG=none TEST=covered by unit test. R=wjmaclean@chromium.org Review URL: http://codereview.chromium.org/7210048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91317 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r--views/view.cc1
-rw-r--r--views/view_unittest.cc20
2 files changed, 21 insertions, 0 deletions
diff --git a/views/view.cc b/views/view.cc
index b06f5d3..7825804 100644
--- a/views/view.cc
+++ b/views/view.cc
@@ -1748,6 +1748,7 @@ void View::CreateLayer() {
layer_helper_->SetLayer(new ui::Layer(compositor));
layer()->set_bounds(gfx::Rect(offset.x(), offset.y(), width(), height()));
+ layer()->set_transform(GetTransform());
if (ancestor_with_layer)
ancestor_with_layer->layer()->Add(layer());
layer_helper_->set_bitmap_needs_updating(true);
diff --git a/views/view_unittest.cc b/views/view_unittest.cc
index 7f3c4bb..58a8c7a 100644
--- a/views/view_unittest.cc
+++ b/views/view_unittest.cc
@@ -2579,6 +2579,26 @@ TEST_F(ViewLayerTest, ToggleVisibilityWithTransform) {
EXPECT_EQ(2.0f, view->GetTransform().matrix()[0]);
}
+// Verifies a transform persists after removing/adding a view with a transform.
+TEST_F(ViewLayerTest, ResetTransformOnLayerAfterAdd) {
+ View* view = new View;
+ ui::Transform transform;
+ transform.SetScale(2.0f, 2.0f);
+ view->SetTransform(transform);
+ widget()->SetContentsView(view);
+ EXPECT_EQ(2.0f, view->GetTransform().matrix()[0]);
+ ASSERT_TRUE(view->layer() != NULL);
+ EXPECT_EQ(2.0f, view->layer()->transform().matrix()[0]);
+
+ View* parent = view->parent();
+ parent->RemoveChildView(view);
+ parent->AddChildView(view);
+
+ EXPECT_EQ(2.0f, view->GetTransform().matrix()[0]);
+ ASSERT_TRUE(view->layer() != NULL);
+ EXPECT_EQ(2.0f, view->layer()->transform().matrix()[0]);
+}
+
// Verifies that the complete bounds of a texture are updated if the texture
// needs to be refreshed and paint with a clip is invoked.
TEST_F(ViewLayerTest, PaintAll) {