Skip to content

Commit b000c61

Browse files
committed
fix #141: Ignore invisible sprites in contains point methods
1 parent 2357cd4 commit b000c61

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/renderedtarget.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ const std::vector<QPoint> &RenderedTarget::hullPoints() const
599599

600600
bool RenderedTarget::contains(const QPointF &point) const
601601
{
602-
if (!m_costume || !m_texture.isValid() || !m_cpuTexture.isValid() || !parentItem())
602+
if (!isVisible() || !m_costume || !m_texture.isValid() || !m_cpuTexture.isValid() || !parentItem())
603603
return false;
604604

605605
const double scaleRatio = m_skin->getTextureScale(m_texture) / m_skin->getTextureScale(m_cpuTexture);
@@ -612,7 +612,7 @@ bool RenderedTarget::contains(const QPointF &point) const
612612

613613
bool RenderedTarget::containsScratchPoint(double x, double y) const
614614
{
615-
if (!m_engine || !m_skin || !m_costume)
615+
if (!isVisible() || !m_engine || !m_skin || !m_costume)
616616
return false;
617617

618618
return containsLocalPoint(mapFromScratchToLocal(QPointF(x, y)));

test/renderedtarget/renderedtarget_test.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,12 @@ TEST_F(RenderedTargetTest, CpuRendering)
403403
ASSERT_TRUE(target.contains({ 3, 3 }));
404404
ASSERT_TRUE(target.contains({ 3.3, 3.5 }));
405405

406+
// Regtest for #141
407+
target.setVisible(false);
408+
ASSERT_FALSE(target.contains({ 1, 3 }));
409+
ASSERT_FALSE(target.contains({ 2, 3 }));
410+
target.setVisible(true);
411+
406412
// Test contains() with horizontal mirroring
407413
target.updateRotationStyle(Sprite::RotationStyle::LeftRight);
408414
target.updateDirection(-45);
@@ -437,6 +443,12 @@ TEST_F(RenderedTargetTest, CpuRendering)
437443
ASSERT_TRUE(target.containsScratchPoint(-225, 162)); // [3, 3]
438444
ASSERT_TRUE(target.containsScratchPoint(-224.7, 161.5)); // [3.3, 3.5]
439445

446+
// Regtest for #141
447+
target.setVisible(false);
448+
ASSERT_FALSE(target.containsScratchPoint(-227, 162)); // [1, 3]
449+
ASSERT_FALSE(target.containsScratchPoint(-226, 162)); // [2, 3]
450+
target.setVisible(true);
451+
440452
// Test colorAtScratchPoint()
441453
ASSERT_EQ(target.colorAtScratchPoint(-228, 165), 0); // [0, 0]
442454
ASSERT_EQ(target.colorAtScratchPoint(-227, 165), 0); // [1, 0]

0 commit comments

Comments
 (0)