diff --git a/app/settings/screensdialog/delegates/checkboxdelegate.cpp b/app/settings/screensdialog/delegates/checkboxdelegate.cpp index 38dd29728..462ab953e 100644 --- a/app/settings/screensdialog/delegates/checkboxdelegate.cpp +++ b/app/settings/screensdialog/delegates/checkboxdelegate.cpp @@ -36,12 +36,26 @@ bool CheckBox::editorEvent(QEvent *event, QAbstractItemModel *model, const QStyl Q_ASSERT(event); Q_ASSERT(model); - if (event->type() == QEvent::MouseButtonDblClick) { - if (!option.rect.contains(static_cast(event)->pos())) + if (event->type() == QEvent::MouseButtonRelease) { + //! single click on checkbox, changes state + QStyleOptionButton checkopt; + checkopt.text = ""; + checkopt.rect = option.rect; + QRect remained = Latte::remainedFromCheckBox(checkopt); + QRegion checkregion = QRegion(option.rect).subtracted(remained); + + if (!(checkregion.boundingRect().contains(static_cast(event)->pos()))) { return false; + } + } else if (event->type() == QEvent::MouseButtonDblClick) { + //! double click on checkbox text, changes state + if (!option.rect.contains(static_cast(event)->pos())) { + return false; + } } else if (event->type() == QEvent::KeyPress) { - if (static_cast(event)->key() != Qt::Key_Space && static_cast(event)->key() != Qt::Key_Select) + if (static_cast(event)->key() != Qt::Key_Space && static_cast(event)->key() != Qt::Key_Select) { return false; + } } else { return false; } diff --git a/app/settings/screensdialog/screensdialog.cpp b/app/settings/screensdialog/screensdialog.cpp index 10e2fd0bf..817042412 100644 --- a/app/settings/screensdialog/screensdialog.cpp +++ b/app/settings/screensdialog/screensdialog.cpp @@ -59,7 +59,6 @@ void ScreensDialog::init() void ScreensDialog::initButtons() { - m_ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(false); connect(m_ui->buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &ScreensDialog::onCancel); } @@ -87,7 +86,6 @@ QPushButton *ScreensDialog::removeNowButton() const void ScreensDialog::onDataChanged() { - //m_ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(!m_handler->inDefaultValues()); } diff --git a/app/settings/screensdialog/screensdialog.ui b/app/settings/screensdialog/screensdialog.ui index 757226acb..740be8baa 100644 --- a/app/settings/screensdialog/screensdialog.ui +++ b/app/settings/screensdialog/screensdialog.ui @@ -53,6 +53,30 @@ + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Deselect All + + + + + @@ -108,7 +132,7 @@ Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Reset + QDialogButtonBox::Cancel diff --git a/app/settings/screensdialog/screenshandler.cpp b/app/settings/screensdialog/screenshandler.cpp index ba0a25b75..18824649f 100644 --- a/app/settings/screensdialog/screenshandler.cpp +++ b/app/settings/screensdialog/screenshandler.cpp @@ -57,7 +57,7 @@ void ScreensHandler::init() m_ui->screensTable->setItemDelegateForColumn(Model::Screens::SCREENCOLUMN, new Settings::Screens::Delegate::CheckBox(this)); //! Buttons - connect(m_ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, this, &ScreensHandler::reset); + connect(m_ui->deselectAllBtn, &QPushButton::clicked, this, &ScreensHandler::deselectAll); //! load data m_screensModel->setData(m_dialog->layoutsController()->screensData()); @@ -73,6 +73,11 @@ bool ScreensHandler::inDefaultValues() const return m_screensModel->inDefaultValues(); } +void ScreensHandler::deselectAll() +{ + m_screensModel->deselectAll(); +} + void ScreensHandler::reset() { if (m_screensModel->hasChangedData()) { diff --git a/app/settings/screensdialog/screenshandler.h b/app/settings/screensdialog/screenshandler.h index e966b13b7..2a519f958 100644 --- a/app/settings/screensdialog/screenshandler.h +++ b/app/settings/screensdialog/screenshandler.h @@ -46,6 +46,7 @@ public: Latte::Data::ScreensTable currentData() const; public slots: + void deselectAll(); void reset() override; void resetDefaults() override; void save() override; diff --git a/app/settings/screensdialog/screensmodel.cpp b/app/settings/screensdialog/screensmodel.cpp index 8fca08359..c34aa54e2 100644 --- a/app/settings/screensdialog/screensmodel.cpp +++ b/app/settings/screensdialog/screensmodel.cpp @@ -84,6 +84,19 @@ void Screens::clear() } } +void Screens::deselectAll() +{ + QVector roles; + roles << Qt::CheckStateRole; + + for(int i=0; i