diff --git a/src/headers/macro-selection.hpp b/src/headers/macro-selection.hpp index 3fe13b93..c1c9219d 100644 --- a/src/headers/macro-selection.hpp +++ b/src/headers/macro-selection.hpp @@ -9,6 +9,8 @@ class MacroSelection : public QComboBox { public: MacroSelection(QWidget *parent); void SetCurrentMacro(Macro *); + void HideSelectedMacro(); // Macro currently being edited + void ShowAllMacros(); private slots: void MacroAdd(const QString &name); diff --git a/src/macro-action-macro.cpp b/src/macro-action-macro.cpp index e97db31e..1b08583c 100644 --- a/src/macro-action-macro.cpp +++ b/src/macro-action-macro.cpp @@ -144,6 +144,10 @@ void MacroActionMacroEdit::UpdateEntryData() } _actions->setCurrentIndex(static_cast(_entryData->_action)); _macros->SetCurrentMacro(_entryData->_macro.get()); + if (_entryData->_action == PerformMacroAction::RUN || + _entryData->_action == PerformMacroAction::STOP) { + _macros->HideSelectedMacro(); + } } void MacroActionMacroEdit::MacroChanged(const QString &text) @@ -166,6 +170,13 @@ void MacroActionMacroEdit::ActionChanged(int value) std::lock_guard lock(switcher->m); _entryData->_action = static_cast(value); + + if (_entryData->_action == PerformMacroAction::RUN || + _entryData->_action == PerformMacroAction::STOP) { + _macros->HideSelectedMacro(); + } else { + _macros->ShowAllMacros(); + } } void MacroActionMacroEdit::MacroRemove(const QString &) diff --git a/src/macro-selection.cpp b/src/macro-selection.cpp index b92352b0..f9e53cb4 100644 --- a/src/macro-selection.cpp +++ b/src/macro-selection.cpp @@ -43,6 +43,28 @@ void MacroSelection::SetCurrentMacro(Macro *m) } } +void MacroSelection::HideSelectedMacro() +{ + auto ssWindow = static_cast(window()); + if (!ssWindow) { + return; + } + int idx = ssWindow->ui->macros->currentRow(); + if (idx == -1) { + return; + } + // +1 for "select macro" entry + qobject_cast(view())->setRowHidden(idx + 1, true); +} + +void MacroSelection::ShowAllMacros() +{ + auto v = qobject_cast(view()); + for (int i = count(); i > 0; i--) { + v->setRowHidden(i, false); + } +} + void MacroSelection::MacroRemove(const QString &name) { int idx = findText(name);