From b86c70ab2ce91c46355a71008334aa6743caa1e6 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sun, 24 Dec 2017 14:34:53 +0100 Subject: Turn filter list options into context menu Let the menu introduced in commit 5e86442bab680b79fbd3cd490091ab9f14252e94 pop up on right-click instead of button-click. Signed-off-by: Berthold Stoeger --- desktop-widgets/listfilter.ui | 10 ---------- desktop-widgets/simplewidgets.cpp | 16 +++++++++++----- desktop-widgets/simplewidgets.h | 1 + 3 files changed, 12 insertions(+), 15 deletions(-) (limited to 'desktop-widgets') diff --git a/desktop-widgets/listfilter.ui b/desktop-widgets/listfilter.ui index dcdcd932e..48d813d21 100644 --- a/desktop-widgets/listfilter.ui +++ b/desktop-widgets/listfilter.ui @@ -51,16 +51,6 @@ - - - - ... - - - QToolButton::InstantPopup - - - diff --git a/desktop-widgets/simplewidgets.cpp b/desktop-widgets/simplewidgets.cpp index 167d3db1a..b63349819 100644 --- a/desktop-widgets/simplewidgets.cpp +++ b/desktop-widgets/simplewidgets.cpp @@ -498,6 +498,13 @@ void DiveComponentSelection::buttonClicked(QAbstractButton *button) } } +void FilterBase::addContextMenuEntry(const QString &s, void (FilterModelBase::*fn)()) +{ + QAction *act = new QAction(s, this); + connect(act, &QAction::triggered, model, fn); + ui.filterList->addAction(act); +} + FilterBase::FilterBase(FilterModelBase *model_, QWidget *parent) : QWidget(parent), model(model_) { @@ -511,11 +518,10 @@ FilterBase::FilterBase(FilterModelBase *model_, QWidget *parent) : QWidget(paren connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString))); ui.filterList->setModel(filter); - QMenu *menu = new QMenu(this); - menu->addAction(tr("Select All"), model, &FilterModelBase::selectAll); - menu->addAction(tr("Unselect All"), model, &FilterModelBase::clearFilter); - menu->addAction(tr("Invert Selection"), model, &FilterModelBase::invertSelection); - ui.selectionButton->setMenu(menu); + addContextMenuEntry(tr("Select All"), &FilterModelBase::selectAll); + addContextMenuEntry(tr("Unselect All"), &FilterModelBase::clearFilter); + addContextMenuEntry(tr("Invert Selection"), &FilterModelBase::invertSelection); + ui.filterList->setContextMenuPolicy(Qt::ActionsContextMenu); } void FilterBase::showEvent(QShowEvent *event) diff --git a/desktop-widgets/simplewidgets.h b/desktop-widgets/simplewidgets.h index 294fe26cf..fdaa4587e 100644 --- a/desktop-widgets/simplewidgets.h +++ b/desktop-widgets/simplewidgets.h @@ -167,6 +167,7 @@ public: }; class FilterBase : public QWidget { + void addContextMenuEntry(const QString &s, void (FilterModelBase::*)()); protected: FilterBase(FilterModelBase *model, QWidget *parent = 0); FilterModelBase *model; -- cgit v1.2.3-70-g09d2