Fix bugs with instance menu bar options when opening without instances

- The launch option is no longer empty.
- The program now checks on startup whether an instance is selected to decide whether to disable instance options.

Also, get rid of a dynamic cast.
This commit is contained in:
Kenneth Chew 2022-04-17 12:44:24 -04:00
parent 9bad83a551
commit 3acc761419
No known key found for this signature in database
GPG Key ID: F17D3E14A07739DA

View File

@ -636,6 +636,8 @@ public:
actionLaunchInstance = TranslatedAction(MainWindow);
actionLaunchInstance->setObjectName(QStringLiteral("actionLaunchInstance"));
actionLaunchInstance.setTextId(QT_TRANSLATE_NOOP("MainWindow", "&Launch"));
actionLaunchInstance.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Launch the selected instance."));
all_actions.append(&actionLaunchInstance);
actionLaunchInstanceOffline = TranslatedAction(MainWindow);
@ -734,6 +736,7 @@ public:
actionCopyInstance->setShortcut(QKeySequence(tr("Ctrl+D")));
all_actions.append(&actionCopyInstance);
setInstanceActionsEnabled(false);
}
void createInstanceToolbar(QMainWindow *MainWindow)
@ -784,7 +787,7 @@ public:
MainWindow->addToolBar(Qt::RightToolBarArea, instanceToolBar);
}
void setupUi(QMainWindow *MainWindow)
void setupUi(MainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
{
@ -798,7 +801,7 @@ public:
#endif
createMainToolbarActions(MainWindow);
createMenuActions(dynamic_cast<class MainWindow *>(MainWindow));
createMenuActions(MainWindow);
createInstanceActions(MainWindow);
createMenuBar(MainWindow);
@ -818,6 +821,8 @@ public:
createNewsToolbar(MainWindow);
createInstanceToolbar(MainWindow);
MainWindow->updateToolsMenu();
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
@ -1146,7 +1151,7 @@ void MainWindow::updateToolsMenu()
QToolButton *launchButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstance));
QToolButton *launchOfflineButton = dynamic_cast<QToolButton*>(ui->instanceToolBar->widgetForAction(ui->actionLaunchInstanceOffline));
if(!m_selectedInstance || m_selectedInstance->isRunning())
if(m_selectedInstance && m_selectedInstance->isRunning())
{
ui->actionLaunchInstance->setMenu(nullptr);
ui->actionLaunchInstanceOffline->setMenu(nullptr);
@ -1179,14 +1184,20 @@ void MainWindow::updateToolsMenu()
normalLaunch->setShortcut(QKeySequence::Open);
QAction *normalLaunchOffline = launchOfflineMenu->addAction(tr("Launch Offline"));
normalLaunchOffline->setShortcut(QKeySequence(tr("Ctrl+Shift+O")));
connect(normalLaunch, &QAction::triggered, [this]()
{
APPLICATION->launch(m_selectedInstance, true);
});
connect(normalLaunchOffline, &QAction::triggered, [this]()
{
APPLICATION->launch(m_selectedInstance, false);
});
if (m_selectedInstance)
{
connect(normalLaunch, &QAction::triggered, [this]() {
APPLICATION->launch(m_selectedInstance, true);
});
connect(normalLaunchOffline, &QAction::triggered, [this]() {
APPLICATION->launch(m_selectedInstance, false);
});
}
else
{
normalLaunch->setDisabled(true);
normalLaunchOffline->setDisabled(true);
}
QString profilersTitle = tr("Profilers");
launchMenu->addSeparator()->setText(profilersTitle);
launchOfflineMenu->addSeparator()->setText(profilersTitle);
@ -1203,7 +1214,7 @@ void MainWindow::updateToolsMenu()
profilerAction->setToolTip(profilerToolTip);
profilerOfflineAction->setToolTip(profilerToolTip);
}
else
else if (m_selectedInstance)
{
connect(profilerAction, &QAction::triggered, [this, profiler]()
{
@ -1214,6 +1225,11 @@ void MainWindow::updateToolsMenu()
APPLICATION->launch(m_selectedInstance, false, profiler.get());
});
}
else
{
profilerAction->setDisabled(true);
profilerOfflineAction->setDisabled(true);
}
}
ui->actionLaunchInstance->setMenu(launchMenu);
ui->actionLaunchInstanceOffline->setMenu(launchOfflineMenu);