diff -r 16855456992d -r 959469a7e149 src/main.cpp --- a/src/main.cpp Mon Jun 20 22:22:15 2022 +0300 +++ b/src/main.cpp Mon Jun 20 22:40:31 2022 +0300 @@ -49,6 +49,20 @@ std::unique_ptr gridLayer; Model* model; }; + +class Signal final : public QObject +{ + Q_OBJECT +public: + Signal() : QObject{}{} + virtual ~Signal(){} + void emit() + { + Q_EMIT this->triggered(); + } +Q_SIGNALS: + void triggered(); +}; #include "main.moc" static void doQtRegistrations() @@ -359,6 +373,7 @@ ColorTable colorTable; gl::RenderPreferences renderPreferences; MessageLog messageLog; + Signal settingsChanged; ui.setupUi(&mainWindow); const uiutilities::KeySequenceMap defaultKeyboardShortcuts = uiutilities::makeKeySequenceMap(uiutilities::collectActions(&mainWindow)); @@ -370,6 +385,7 @@ setSetting(renderPreferences.drawAxes); setSetting(renderPreferences.wireframe); libraries.storeToSettings(); + settingsChanged.emit(); }; const auto updateRecentlyOpenedDocumentsMenu = [&]{ rebuildRecentFilesMenu(ui.menuRecentFiles, recentlyOpenedFiles, &mainWindow); @@ -406,6 +422,7 @@ updateRenderPreferences(&ui, &renderPreferences, &documents); ui.mdiArea->setViewMode(setting()); ui.retranslateUi(&mainWindow); + settingsChanged.emit(); }; const auto addRecentlyOpenedFile = [&](const QString& path){ constexpr int maxRecentlyOpenedFiles = 10; @@ -480,6 +497,12 @@ } } }); + QObject::connect(&settingsChanged, &Signal::triggered, [modelId, &documents]{ + ModelData* data = findModelData(&documents, modelId); + if (data != nullptr) { + data->gridLayer->settingsChanged(); + } + }); QObject::connect(data->canvas.get(), &PartRenderer::message, &messageLog, &MessageLog::addMessage); const QFileInfo fileInfo{*documents.modelPath(modelId)}; ModelSubWindow* subWindow = new ModelSubWindow{modelId, ui.mdiArea};