]> git.lyx.org Git - features.git/blobdiff - src/frontends/qt4/GuiWorkArea.cpp
Close a tab on middle-click (#10288)
[features.git] / src / frontends / qt4 / GuiWorkArea.cpp
index 72a043e0bfd280955f361be383da7e87464b0e1d..b9e5e8ec87a361777fe0dd0668621146d9011a24 100644 (file)
@@ -1557,7 +1557,7 @@ NoTabFrameMacStyle noTabFrameMacStyle;
 
 
 TabWorkArea::TabWorkArea(QWidget * parent)
-       : QTabWidget(parent), clicked_tab_(-1)
+       : QTabWidget(parent), clicked_tab_(-1), midpressed_tab_(-1)
 {
 #ifdef Q_OS_MAC
        setStyle(&noTabFrameMacStyle);
@@ -1605,6 +1605,26 @@ TabWorkArea::TabWorkArea(QWidget * parent)
 }
 
 
+void TabWorkArea::mousePressEvent(QMouseEvent *me)
+{
+       if (me->button() == Qt::MidButton)
+               midpressed_tab_ = tabBar()->tabAt(me->pos());
+       else
+               QTabWidget::mousePressEvent(me);
+}
+
+
+void TabWorkArea::mouseReleaseEvent(QMouseEvent *me)
+{
+       if (me->button() == Qt::MidButton) {
+               int const midreleased_tab = tabBar()->tabAt(me->pos());
+               if (midpressed_tab_ == midreleased_tab && posIsTab(me->pos()))
+                       closeTab(midreleased_tab);
+       } else
+               QTabWidget::mouseReleaseEvent(me);
+}
+
+
 void TabWorkArea::paintEvent(QPaintEvent * event)
 {
        if (tabBar()->isVisible()) {