diff options
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/taskbar.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/taskbar.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp b/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp index 915ca9a..ba797f6 100644 --- a/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp @@ -31,10 +31,11 @@ QAction* TaskBar::addTask(const QIcon& icon, const QString& text) QAction* action = QToolBar::addAction(icon, text); tasks << action; QToolButton* btn = getToolButton(action); - btn->setMaximumWidth(400); if (!btn) return action; + btn->setMaximumWidth(400); + btn->installEventFilter(this); taskGroup.addAction(action); connect(btn, SIGNAL(pressed()), this, SLOT(mousePressed())); return action; @@ -204,6 +205,21 @@ void TaskBar::dropEvent(QDropEvent *event) event->acceptProposedAction(); } +bool TaskBar::eventFilter(QObject* obj, QEvent* event) +{ + if (event->type() == QEvent::MouseButtonPress && dynamic_cast<QMouseEvent*>(event)->button() == Qt::MiddleButton) + { + QToolButton* btn = dynamic_cast<QToolButton*>(obj); + if (btn && btn->defaultAction()) + { + btn->defaultAction()->trigger(); + MDIAREA->closeActiveSubWindow(); + return true; + } + } + return QObject::eventFilter(obj, event); +} + void TaskBar::dragTaskTo(QAction* task, const QPoint& position) { int idx = getDropPositionIndex(task, position); |
