Skip to content

Commit d4c0a98

Browse files
committed
Do not set bubble text in hidden sprites
1 parent 548df99 commit d4c0a98

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/scratch/sprite.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ void Sprite::setBubbleType(BubbleType type)
441441
/*! Overrides Target#setBubbleText(). */
442442
void Sprite::setBubbleText(const std::string &text)
443443
{
444-
Target::setBubbleText(text);
444+
Target::setBubbleText(impl->visible ? text : "");
445445

446446
if (impl->visible && !text.empty()) {
447447
IEngine *eng = engine();
@@ -451,7 +451,7 @@ void Sprite::setBubbleText(const std::string &text)
451451
}
452452

453453
if (impl->iface)
454-
impl->iface->onBubbleTextChanged(text);
454+
impl->iface->onBubbleTextChanged(impl->visible ? text : "");
455455
}
456456

457457
Target *Sprite::dataSource() const

test/scratch_classes/sprite_test.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,8 +636,12 @@ TEST(SpriteTest, GraphicsEffects)
636636
TEST(SpriteTest, BubbleType)
637637
{
638638
Sprite sprite;
639+
EngineMock engine;
640+
sprite.setEngine(&engine);
639641
ASSERT_EQ(sprite.bubbleType(), Target::BubbleType::Say);
640642

643+
EXPECT_CALL(engine, requestRedraw).Times(0);
644+
641645
sprite.setBubbleType(Target::BubbleType::Think);
642646
ASSERT_EQ(sprite.bubbleType(), Target::BubbleType::Think);
643647

@@ -648,11 +652,22 @@ TEST(SpriteTest, BubbleType)
648652
TEST(SpriteTest, BubbleText)
649653
{
650654
Sprite sprite;
655+
EngineMock engine;
656+
sprite.setVisible(true);
657+
sprite.setEngine(&engine);
651658
ASSERT_TRUE(sprite.bubbleText().empty());
652659

660+
EXPECT_CALL(engine, requestRedraw());
653661
sprite.setBubbleText("hello");
654662
ASSERT_EQ(sprite.bubbleText(), "hello");
655663

664+
EXPECT_CALL(engine, requestRedraw());
656665
sprite.setBubbleText("world");
657666
ASSERT_EQ(sprite.bubbleText(), "world");
667+
668+
sprite.setVisible(false);
669+
670+
EXPECT_CALL(engine, requestRedraw).Times(0);
671+
sprite.setBubbleText("test");
672+
ASSERT_TRUE(sprite.bubbleText().empty());
658673
}

0 commit comments

Comments
 (0)