diff --git a/src/gui/search/searchwidget.cpp b/src/gui/search/searchwidget.cpp index a4f9e3148..fda9e1763 100644 --- a/src/gui/search/searchwidget.cpp +++ b/src/gui/search/searchwidget.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -162,6 +163,15 @@ bool SearchWidget::eventFilter(QObject *object, QEvent *event) closeTab(tabIndex); return true; } + if (mouseEvent->button() == Qt::RightButton) + { + QMenu *menu = new QMenu(this); + menu->setAttribute(Qt::WA_DeleteOnClose); + menu->addAction(tr("Close tab"), this, [this, tabIndex]() { closeTab(tabIndex); }); + menu->addAction(tr("Close all tabs"), this, &SearchWidget::closeAllTabs); + menu->popup(QCursor::pos()); + return true; + } return false; } return QWidget::eventFilter(object, event); @@ -381,3 +391,9 @@ void SearchWidget::closeTab(int index) delete tab; } + +void SearchWidget::closeAllTabs() +{ + for (int i = (m_allTabs.size() - 1); i >= 0; --i) + closeTab(i); +} diff --git a/src/gui/search/searchwidget.h b/src/gui/search/searchwidget.h index ce54dfd0c..8d9ebebfb 100644 --- a/src/gui/search/searchwidget.h +++ b/src/gui/search/searchwidget.h @@ -65,6 +65,7 @@ private: bool eventFilter(QObject *object, QEvent *event) override; void tabChanged(int index); void closeTab(int index); + void closeAllTabs(); void tabStatusChanged(QWidget *tab); void selectMultipleBox(int index); void toggleFocusBetweenLineEdits();