Add context menu for tabs in search widget (#14926)

In searchwidget you can close all opened tabs or selected tab using menu. Closes #5628.
This commit is contained in:
Anton 2021-05-17 06:56:21 +03:00 committed by GitHub
parent ea3b897d5d
commit a51742b47c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 0 deletions

View file

@ -39,6 +39,7 @@
#include <QDebug>
#include <QEvent>
#include <QMessageBox>
#include <QMenu>
#include <QMouseEvent>
#include <QObject>
#include <QRegularExpression>
@ -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);
}

View file

@ -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();