Skip to content

Commit d37f312

Browse files
committed
Drawable: Add layerOrderChanged signal
Resolves: #587
1 parent 99847bd commit d37f312

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

include/scratchcpp/drawable.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#pragma once
44

55
#include "global.h"
6+
#include "signal.h"
67
#include "spimpl.h"
78

89
namespace libscratchcpp
@@ -27,6 +28,7 @@ class LIBSCRATCHCPP_EXPORT Drawable
2728

2829
int layerOrder() const;
2930
virtual void setLayerOrder(int newLayerOrder);
31+
sigslot::signal<int> &layerOrderChanged() const;
3032

3133
IEngine *engine() const;
3234
virtual void setEngine(IEngine *engine);

src/scratch/drawable.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ int Drawable::layerOrder() const
2222
void Drawable::setLayerOrder(int newLayerOrder)
2323
{
2424
impl->layerOrder = newLayerOrder;
25+
impl->layerOrderChanged(newLayerOrder);
26+
}
27+
28+
/*! Emits when the layer number changes. */
29+
sigslot::signal<int> &Drawable::layerOrderChanged() const
30+
{
31+
return impl->layerOrderChanged;
2532
}
2633

2734
/*! Returns the engine. */

src/scratch/drawable_p.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
#pragma once
44

5+
#include <scratchcpp/signal.h>
6+
57
namespace libscratchcpp
68
{
79

@@ -11,6 +13,7 @@ struct DrawablePrivate
1113
{
1214
int layerOrder = 0;
1315
IEngine *engine = nullptr;
16+
mutable sigslot::signal<int> layerOrderChanged;
1417
};
1518

1619
} // namespace libscratchcpp

test/scratch_classes/drawable_test.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55

66
using namespace libscratchcpp;
77

8+
class LayerOrderMock
9+
{
10+
public:
11+
MOCK_METHOD(void, f, (int));
12+
};
13+
814
TEST(DrawableTest, IsTarget)
915
{
1016
Drawable drawable;
@@ -21,8 +27,17 @@ TEST(DrawableTest, LayerOrder)
2127
{
2228
Drawable drawable;
2329
ASSERT_EQ(drawable.layerOrder(), 0);
30+
31+
LayerOrderMock spy;
32+
drawable.layerOrderChanged().connect(&LayerOrderMock::f, &spy);
33+
34+
EXPECT_CALL(spy, f(2));
2435
drawable.setLayerOrder(2);
2536
ASSERT_EQ(drawable.layerOrder(), 2);
37+
38+
EXPECT_CALL(spy, f(0));
39+
drawable.setLayerOrder(0);
40+
ASSERT_EQ(drawable.layerOrder(), 0);
2641
}
2742

2843
TEST(TargetTest, Engine)

0 commit comments

Comments
 (0)