Skip to content

Commit 8492868

Browse files
committed
ProjectLoader: Auto-position new monitors
1 parent e8a397b commit 8492868

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/projectloader.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,11 @@ void ProjectLoader::timerEvent(QTimerEvent *event)
227227
return;
228228

229229
if (m_engine) {
230+
for (Monitor *monitor : m_unpositionedMonitors)
231+
monitor->autoPosition(m_engine->monitors());
232+
233+
m_unpositionedMonitors.clear();
234+
230235
m_engine->step();
231236

232237
if (m_running != m_engine->isRunning()) {
@@ -245,6 +250,7 @@ void ProjectLoader::callLoad(ProjectLoader *loader)
245250

246251
void ProjectLoader::load()
247252
{
253+
m_unpositionedMonitors.clear();
248254
m_loadStatus = m_project.load();
249255
m_engineMutex.lock();
250256
m_engine = m_project.engine().get();
@@ -401,6 +407,11 @@ void ProjectLoader::addMonitor(Monitor *monitor)
401407
if (!model)
402408
return;
403409

410+
if (monitor->needsAutoPosition()) {
411+
if (std::find(m_unpositionedMonitors.begin(), m_unpositionedMonitors.end(), monitor) == m_unpositionedMonitors.end())
412+
m_unpositionedMonitors.push_back(monitor);
413+
}
414+
404415
model->moveToThread(qApp->thread());
405416
model->setParent(this);
406417
monitor->setInterface(model);

src/projectloader.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ class ProjectLoader : public QObject
151151
QList<SpriteModel *> m_sprites;
152152
QList<SpriteModel *> m_clones;
153153
QList<MonitorModel *> m_monitors;
154+
std::vector<libscratchcpp::Monitor *> m_unpositionedMonitors;
154155
QStringList m_unsupportedBlocks;
155156
double m_fps = 30;
156157
bool m_turboMode = false;

0 commit comments

Comments
 (0)