mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 05:17:02 +02:00
Debugging menu destruction
This commit is contained in:
parent
40316498a4
commit
b117a4b8d7
1 changed files with 36 additions and 4 deletions
|
@ -177,19 +177,51 @@ void ScriptEngine::disconnectNonEssentialSignals() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptEngine::runDebuggable() {
|
void ScriptEngine::runDebuggable() {
|
||||||
|
static QMenuBar* menuBar { nullptr };
|
||||||
|
static QMenu* scriptDebugMenu { nullptr };
|
||||||
|
static size_t scriptMenuCount { 0 };
|
||||||
|
if (!scriptDebugMenu) {
|
||||||
|
for (auto window : qApp->topLevelWidgets()) {
|
||||||
|
auto mainWindow = qobject_cast<QMainWindow*>(window);
|
||||||
|
if (mainWindow) {
|
||||||
|
menuBar = mainWindow->menuBar();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (menuBar) {
|
||||||
|
scriptDebugMenu = menuBar->addMenu("Script Debug");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init();
|
init();
|
||||||
_isRunning = true;
|
_isRunning = true;
|
||||||
_debuggable = true;
|
_debuggable = true;
|
||||||
_debugger = new QScriptEngineDebugger(this);
|
_debugger = new QScriptEngineDebugger(this);
|
||||||
_debugger->attachTo(this);
|
_debugger->attachTo(this);
|
||||||
static QMenu* scriptDebugMenu = qobject_cast<QMainWindow*>(qApp->activeWindow())->menuBar()->addMenu("Script Debug");
|
|
||||||
scriptDebugMenu->addMenu(_fileNameString)->addMenu(_debugger->createStandardMenu(qApp->activeWindow()));
|
QMenu* parentMenu = scriptDebugMenu;
|
||||||
_debugger->action(QScriptEngineDebugger::InterruptAction)->trigger();
|
QMenu* scriptMenu { nullptr };
|
||||||
|
if (parentMenu) {
|
||||||
|
++scriptMenuCount;
|
||||||
|
scriptMenu = parentMenu->addMenu(_fileNameString);
|
||||||
|
scriptMenu->addMenu(_debugger->createStandardMenu(qApp->activeWindow()));
|
||||||
|
} else {
|
||||||
|
qWarning() << "Unable to add script debug menu";
|
||||||
|
}
|
||||||
|
|
||||||
QScriptValue result = evaluate(_scriptContents, _fileNameString);
|
QScriptValue result = evaluate(_scriptContents, _fileNameString);
|
||||||
|
|
||||||
_lastUpdate = usecTimestampNow();
|
_lastUpdate = usecTimestampNow();
|
||||||
QTimer* timer = new QTimer(this);
|
QTimer* timer = new QTimer(this);
|
||||||
connect(this, &ScriptEngine::finished, [this, timer] {
|
connect(this, &ScriptEngine::finished, [this, timer, parentMenu, scriptMenu] {
|
||||||
|
if (scriptMenu) {
|
||||||
|
parentMenu->removeAction(scriptMenu->menuAction());
|
||||||
|
--scriptMenuCount;
|
||||||
|
if (0 == scriptMenuCount) {
|
||||||
|
menuBar->removeAction(scriptDebugMenu->menuAction());
|
||||||
|
scriptDebugMenu = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
disconnect(timer);
|
disconnect(timer);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue