diff --git a/src/widgets/DebugActions.cpp b/src/widgets/DebugActions.cpp index 8827c6c5..0ad6eee3 100644 --- a/src/widgets/DebugActions.cpp +++ b/src/widgets/DebugActions.cpp @@ -78,7 +78,7 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) : // startButton->setDefaultAction(actionStartEmul); startButton->setMenu(startMenu); - QToolButton *continueUntilButton = new QToolButton; + continueUntilButton = new QToolButton; continueUntilButton->setPopupMode(QToolButton::MenuButtonPopup); connect(continueUntilButton, &QToolButton::triggered, continueUntilButton, &QToolButton::setDefaultAction); @@ -112,6 +112,7 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) : actionStart->setIcon(startDebugIcon); actionStartEmul->setText(startEmulLabel); actionStartEmul->setIcon(startEmulIcon); + continueUntilButton->setDefaultAction(actionContinueUntilMain); setAllActionsVisible(false); }); connect(actionStep, &QAction::triggered, Core(), &CutterCore::stepDebug); @@ -130,6 +131,7 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) : actionStartEmul->setVisible(false); actionStart->setText(restartDebugLabel); actionStart->setIcon(restartIcon); + setButtonVisibleIfMainExists(); Core()->startDebug(); }); @@ -154,6 +156,16 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) : connect(actionContinueUntilSyscall, &QAction::triggered, Core(), &CutterCore::continueUntilSyscall); } +void DebugActions::setButtonVisibleIfMainExists() +{ + int mainExists = Core()->cmd("f?main; ??").toInt(); + // if main is not a flag we hide the continue until main button + if (!mainExists) { + actionContinueUntilMain->setVisible(false); + continueUntilButton->setDefaultAction(actionContinueUntilCall); + } +} + void DebugActions::continueUntilMain() { Core()->continueUntilDebug("main"); diff --git a/src/widgets/DebugActions.h b/src/widgets/DebugActions.h index 50100cf0..70843181 100644 --- a/src/widgets/DebugActions.h +++ b/src/widgets/DebugActions.h @@ -4,6 +4,7 @@ class MainWindow; class QToolBar; +class QToolButton; class DebugActions : public QObject { @@ -30,10 +31,12 @@ public: private: MainWindow *main; QList allActions; + QToolButton *continueUntilButton; private slots: void continueUntilMain(); void attachProcessDialog(); void attachProcess(int pid); void setAllActionsVisible(bool visible); + void setButtonVisibleIfMainExists(); }; \ No newline at end of file