]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Close tab on mouse release rather than on mouse press
authorKai Uwe Broulik <kde@privat.broulik.de>
Mon, 13 Feb 2017 12:20:07 +0000 (13:20 +0100)
committerKai Uwe Broulik <kde@privat.broulik.de>
Mon, 13 Feb 2017 12:20:07 +0000 (13:20 +0100)
Differential Revision: https://phabricator.kde.org/D4501

src/dolphintabbar.cpp
src/dolphintabbar.h

index e909c36aee923eeaba182d3184eb1eb97fe2fb8c..484a9f3a07e7f6f03e5b7c8c53c79f07ff73d6fe 100644 (file)
@@ -29,7 +29,8 @@
 
 DolphinTabBar::DolphinTabBar(QWidget* parent) :
     QTabBar(parent),
-    m_autoActivationIndex(-1)
+    m_autoActivationIndex(-1),
+    m_tabToBeClosedOnMiddleMouseButtonRelease(-1)
 {
     setAcceptDrops(true);
     setSelectionBehaviorOnRemove(QTabBar::SelectPreviousTab);
@@ -95,12 +96,25 @@ void DolphinTabBar::mousePressEvent(QMouseEvent* event)
     const int index = tabAt(event->pos());
 
     if (index >= 0 && event->button() == Qt::MiddleButton) {
+        m_tabToBeClosedOnMiddleMouseButtonRelease = index;
+        return;
+    }
+
+    QTabBar::mousePressEvent(event);
+}
+
+void DolphinTabBar::mouseReleaseEvent(QMouseEvent *event)
+{
+    const int index = tabAt(event->pos());
+
+    if (index >= 0 && index == m_tabToBeClosedOnMiddleMouseButtonRelease
+        && event->button() == Qt::MiddleButton) {
         // Mouse middle click on a tab closes this tab.
         emit tabCloseRequested(index);
         return;
     }
 
-    QTabBar::mousePressEvent(event);
+    QTabBar::mouseReleaseEvent(event);
 }
 
 void DolphinTabBar::mouseDoubleClickEvent(QMouseEvent* event)
index 6daa9a1ada15620fe3d13415c89ad270fc7bd800..0c08031a9714e4fbb584785ae74cf1434e1dbd5b 100644 (file)
@@ -40,6 +40,7 @@ protected:
     virtual void dragMoveEvent(QDragMoveEvent* event) Q_DECL_OVERRIDE;
     virtual void dropEvent(QDropEvent* event) Q_DECL_OVERRIDE;
     virtual void mousePressEvent(QMouseEvent* event) Q_DECL_OVERRIDE;
+    virtual void mouseReleaseEvent(QMouseEvent* event) Q_DECL_OVERRIDE;
     virtual void mouseDoubleClickEvent(QMouseEvent* event) Q_DECL_OVERRIDE;
 
     /**
@@ -60,6 +61,7 @@ private:
 private:
     QTimer* m_autoActivationTimer;
     int m_autoActivationIndex;
+    int m_tabToBeClosedOnMiddleMouseButtonRelease;
 };
 
 #endif // DOLPHIN_TAB_BAR_H