diff --git a/src/renderedtarget.cpp b/src/renderedtarget.cpp index 9ddb101..2cf7854 100644 --- a/src/renderedtarget.cpp +++ b/src/renderedtarget.cpp @@ -307,6 +307,7 @@ void RenderedTarget::setStageScale(double newStageScale) m_stageScale = newStageScale; calculateSize(); calculatePos(); + beforeRedraw(); emit stageScaleChanged(); } @@ -602,11 +603,10 @@ void RenderedTarget::calculateRotation() void RenderedTarget::calculateSize() { if (m_skin && m_costume) { - Texture texture = m_skin->getTexture(m_size * m_stageScale); - m_texture = texture; - m_width = texture.width(); - m_height = texture.height(); - setScale(m_size * m_stageScale / m_skin->getTextureScale(texture) / m_costume->bitmapResolution()); + m_texture = m_skin->getTexture(m_size * m_stageScale); + m_width = m_texture.width(); + m_height = m_texture.height(); + setScale(m_size * m_stageScale / m_skin->getTextureScale(m_texture) / m_costume->bitmapResolution()); } } diff --git a/test/renderedtarget/renderedtarget_test.cpp b/test/renderedtarget/renderedtarget_test.cpp index ba79e3b..0ff9acc 100644 --- a/test/renderedtarget/renderedtarget_test.cpp +++ b/test/renderedtarget/renderedtarget_test.cpp @@ -270,6 +270,13 @@ TEST_F(RenderedTargetTest, UpdateMethods) ASSERT_EQ(texture.width(), 26); ASSERT_EQ(texture.height(), 26); + // Stage scale (SVG) - should update width and height + EXPECT_CALL(engine, stageWidth()).WillOnce(Return(480)); + EXPECT_CALL(engine, stageHeight()).WillOnce(Return(360)); + target.setStageScale(3.5); + ASSERT_EQ(target.width(), 52); + ASSERT_EQ(target.height(), 52); + context.doneCurrent(); }