diff --git a/src/apps/deskflow-gui/dialogs/ActionDialog.cpp b/src/apps/deskflow-gui/dialogs/ActionDialog.cpp
index 7da18873c..9156c4586 100644
--- a/src/apps/deskflow-gui/dialogs/ActionDialog.cpp
+++ b/src/apps/deskflow-gui/dialogs/ActionDialog.cpp
@@ -48,15 +48,16 @@ ActionDialog::ActionDialog(QWidget *parent, const ServerConfig &config, Hotkey &
ui->comboActionType->setCurrentIndex(m_action.type());
ui->comboTriggerOn->setCurrentIndex(m_action.activeOnRelease());
- ui->m_pGroupBoxScreens->setChecked(m_action.haveScreens());
-
for (const Screen &screen : config.screens()) {
if (screen.isNull())
continue;
- QListWidgetItem *pListItem = new QListWidgetItem(screen.name());
- ui->m_pListScreens->addItem(pListItem);
- if (m_action.typeScreenNames().indexOf(screen.name()) != -1)
- ui->m_pListScreens->setCurrentItem(pListItem);
+ auto *newListItem = new QListWidgetItem(screen.name());
+ newListItem->setCheckState(Qt::Checked);
+ if ((m_action.typeScreenNames().indexOf(screen.name()) == -1) &&
+ (m_action.haveScreens() && !m_action.typeScreenNames().isEmpty()))
+ newListItem->setCheckState(Qt::Unchecked);
+
+ ui->listScreens->addItem(newListItem);
ui->m_pComboSwitchToScreen->addItem(screen.name());
if (screen.name() == m_action.switchScreenName())
@@ -72,13 +73,24 @@ void ActionDialog::accept()
m_action.setKeySequence(ui->keySequenceWidget->keySequence());
m_action.setType(ui->comboActionType->currentIndex());
- m_action.setHaveScreens(ui->m_pGroupBoxScreens->isChecked());
m_action.typeScreenNames().clear();
- const auto &selection = ui->m_pListScreens->selectedItems();
- for (const QListWidgetItem *pItem : selection)
- m_action.typeScreenNames().append(pItem->text());
+ int screenCount = ui->listScreens->count();
+
+ for (int i = 0; i < ui->listScreens->count(); i++) {
+ const auto &item = ui->listScreens->item(i);
+ m_action.typeScreenNames().append(item->text());
+ if (item->checkState() == Qt::Unchecked) {
+ screenCount--;
+ m_action.typeScreenNames().removeLast();
+ }
+ }
+
+ if (screenCount == ui->listScreens->count())
+ m_action.typeScreenNames().clear();
+
+ m_action.setHaveScreens(screenCount);
m_action.setSwitchScreenName(ui->m_pComboSwitchToScreen->currentText());
m_action.setSwitchDirection(ui->m_pComboSwitchInDirection->currentIndex());
@@ -91,14 +103,13 @@ void ActionDialog::accept()
void ActionDialog::keySequenceChanged()
{
- ui->m_pGroupBoxScreens->setEnabled(!ui->keySequenceWidget->keySequence().isMouseButton());
- ui->m_pListScreens->setEnabled(!ui->keySequenceWidget->keySequence().isMouseButton());
+ ui->listScreens->setEnabled(ui->keySequenceWidget->valid() && !ui->keySequenceWidget->keySequence().isMouseButton());
}
void ActionDialog::actionTypeChanged(int index)
{
ui->keySequenceWidget->setEnabled(isKeyAction(index));
- ui->m_pListScreens->setEnabled(isKeyAction(index) && ui->m_pGroupBoxScreens->isChecked());
+ ui->listScreens->setEnabled(isKeyAction(index));
ui->m_pComboSwitchToScreen->setEnabled(index == ActionTypes::SwitchTo);
ui->m_pComboSwitchInDirection->setEnabled(index == ActionTypes::SwitchInDirection);
ui->m_pComboLockCursorToScreen->setEnabled(index == ActionTypes::ModifyCursorLock);
diff --git a/src/apps/deskflow-gui/dialogs/ActionDialog.ui b/src/apps/deskflow-gui/dialogs/ActionDialog.ui
index 2603ed4f7..03838af1f 100644
--- a/src/apps/deskflow-gui/dialogs/ActionDialog.ui
+++ b/src/apps/deskflow-gui/dialogs/ActionDialog.ui
@@ -6,8 +6,8 @@
0
0
- 375
- 528
+ 521
+ 428
@@ -97,40 +97,18 @@
-
-
+
- only on these screens
+ Computers to recieve this event
-
- true
-
-
- true
-
-
+
-
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 128
- 64
-
+
+
+ QAbstractScrollArea::AdjustToContents
- QAbstractItemView::ExtendedSelection
+ QAbstractItemView::NoSelection