Skip to content

Commit f216407

Browse files
committed
Add handleMouseMove method to ProjectScene
1 parent 178a515 commit f216407

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

ScratchCPPGui/projectscene.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// SPDX-License-Identifier: LGPL-3.0-or-later
22

3+
#include <scratchcpp/iengine.h>
4+
35
#include "projectscene.h"
46

57
namespace scratchcppgui
@@ -23,4 +25,12 @@ void ProjectScene::setEngine(libscratchcpp::IEngine *newEngine)
2325
emit engineChanged();
2426
}
2527

28+
void ProjectScene::handleMouseMove(qreal x, qreal y)
29+
{
30+
if (m_engine) {
31+
m_engine->setMouseX(x - m_engine->stageWidth() / 2.0);
32+
m_engine->setMouseY(-y + m_engine->stageHeight() / 2.0);
33+
}
34+
}
35+
2636
} // namespace scratchcppgui

ScratchCPPGui/projectscene.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class ProjectScene : public QQuickItem
2424
libscratchcpp::IEngine *engine() const;
2525
void setEngine(libscratchcpp::IEngine *newEngine);
2626

27+
Q_INVOKABLE void handleMouseMove(qreal x, qreal y);
28+
2729
signals:
2830
void engineChanged();
2931

test/projectscene/projectscene_test.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,16 @@ TEST(ProjectScene, Engine)
1616
scene.setEngine(&engine);
1717
ASSERT_EQ(scene.engine(), &engine);
1818
}
19+
20+
TEST(ProjectScene, HandleMouseMove)
21+
{
22+
ProjectScene scene;
23+
EngineMock engine;
24+
scene.setEngine(&engine);
25+
26+
EXPECT_CALL(engine, stageWidth()).WillOnce(Return(600));
27+
EXPECT_CALL(engine, stageHeight()).WillOnce(Return(400));
28+
EXPECT_CALL(engine, setMouseX(-253.1));
29+
EXPECT_CALL(engine, setMouseY(216.7));
30+
scene.handleMouseMove(46.9, -16.7);
31+
}

0 commit comments

Comments
 (0)