Skip to content

Commit e0a633d

Browse files
committed
Add onVisibleChanged() method to IMonitorHandler
1 parent 7f142b0 commit e0a633d

File tree

4 files changed

+23
-0
lines changed

4 files changed

+23
-0
lines changed

include/scratchcpp/imonitorhandler.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ class LIBSCRATCHCPP_EXPORT IMonitorHandler
1515
virtual ~IMonitorHandler() { }
1616

1717
virtual void init(Monitor *) = 0;
18+
19+
virtual void onVisibleChanged(bool visible) = 0;
1820
};
1921

2022
} // namespace libscratchcpp

src/scratch/monitor.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@ bool Monitor::visible() const
126126
void Monitor::setVisible(bool visible)
127127
{
128128
impl->visible = visible;
129+
130+
if (impl->iface)
131+
impl->iface->onVisibleChanged(visible);
129132
}
130133

131134
/*! Returns the minimum value of the monitor's slider. */

test/mocks/monitorhandlermock.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ class MonitorHandlerMock : public IMonitorHandler
99
{
1010
public:
1111
MOCK_METHOD(void, init, (Monitor *), (override));
12+
13+
MOCK_METHOD(void, onVisibleChanged, (bool), (override));
1214
};

test/scratch_classes/monitor_test.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,22 @@ TEST(MonitorTest, Visible)
127127

128128
monitor.setVisible(true);
129129
ASSERT_TRUE(monitor.visible());
130+
131+
MonitorHandlerMock handler;
132+
EXPECT_CALL(handler, init);
133+
monitor.setInterface(&handler);
134+
135+
EXPECT_CALL(handler, onVisibleChanged(true));
136+
monitor.setVisible(true);
137+
ASSERT_TRUE(monitor.visible());
138+
139+
EXPECT_CALL(handler, onVisibleChanged(false));
140+
monitor.setVisible(false);
141+
ASSERT_FALSE(monitor.visible());
142+
143+
EXPECT_CALL(handler, onVisibleChanged(false));
144+
monitor.setVisible(false);
145+
ASSERT_FALSE(monitor.visible());
130146
}
131147

132148
TEST(MonitorTest, SliderMin)

0 commit comments

Comments
 (0)