]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphintabbar.cpp
Merge branch 'stashAction'
[dolphin.git] / src / dolphintabbar.cpp
index 78bd5edcb98f376628edd1a4a34ade2eb6c5aa71..484a9f3a07e7f6f03e5b7c8c53c79f07ff73d6fe 100644 (file)
 #include <QTimer>
 #include <QDragEnterEvent>
 #include <KLocalizedString>
-#include <KMenu>
-#include <KIcon>
-#include <KUrl>
+#include <QMenu>
+#include <QIcon>
+#include <QUrl>
+#include <QMimeData>
 
 DolphinTabBar::DolphinTabBar(QWidget* parent) :
     QTabBar(parent),
-    m_autoActivationIndex(-1)
+    m_autoActivationIndex(-1),
+    m_tabToBeClosedOnMiddleMouseButtonRelease(-1)
 {
     setAcceptDrops(true);
     setSelectionBehaviorOnRemove(QTabBar::SelectPreviousTab);
@@ -38,8 +40,8 @@ DolphinTabBar::DolphinTabBar(QWidget* parent) :
     m_autoActivationTimer = new QTimer(this);
     m_autoActivationTimer->setSingleShot(true);
     m_autoActivationTimer->setInterval(800);
-    connect(m_autoActivationTimer, SIGNAL(timeout()),
-            this, SLOT(slotAutoActivationTimeout()));
+    connect(m_autoActivationTimer, &QTimer::timeout,
+            this, &DolphinTabBar::slotAutoActivationTimeout);
 }
 
 void DolphinTabBar::dragEnterEvent(QDragEnterEvent* event)
@@ -47,7 +49,7 @@ void DolphinTabBar::dragEnterEvent(QDragEnterEvent* event)
     const QMimeData* mimeData = event->mimeData();
     const int index = tabAt(event->pos());
 
-    if (KUrl::List::canDecode(mimeData)) {
+    if (mimeData->hasUrls()) {
         event->acceptProposedAction();
         updateAutoActivationTimer(index);
     }
@@ -67,7 +69,7 @@ void DolphinTabBar::dragMoveEvent(QDragMoveEvent* event)
     const QMimeData* mimeData = event->mimeData();
     const int index = tabAt(event->pos());
 
-    if (KUrl::List::canDecode(mimeData)) {
+    if (mimeData->hasUrls()) {
         updateAutoActivationTimer(index);
     }
 
@@ -82,7 +84,7 @@ void DolphinTabBar::dropEvent(QDropEvent* event)
     const QMimeData* mimeData = event->mimeData();
     const int index = tabAt(event->pos());
 
-    if (index >= 0 && KUrl::List::canDecode(mimeData)) {
+    if (index >= 0 && mimeData->hasUrls()) {
         emit tabDropEvent(index, event);
     }
 
@@ -94,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)
@@ -122,12 +137,12 @@ void DolphinTabBar::contextMenuEvent(QContextMenuEvent* event)
 
     if (index >= 0) {
         // Tab context menu
-        KMenu menu(this);
+        QMenu menu(this);
 
-        QAction* newTabAction = menu.addAction(KIcon("tab-new"), i18nc("@action:inmenu", "New Tab"));
-        QAction* detachTabAction = menu.addAction(KIcon("tab-detach"), i18nc("@action:inmenu", "Detach Tab"));
-        QAction* closeOtherTabsAction = menu.addAction(KIcon("tab-close-other"), i18nc("@action:inmenu", "Close Other Tabs"));
-        QAction* closeTabAction = menu.addAction(KIcon("tab-close"), i18nc("@action:inmenu", "Close Tab"));
+        QAction* newTabAction = menu.addAction(QIcon::fromTheme(QStringLiteral("tab-new")), i18nc("@action:inmenu", "New Tab"));
+        QAction* detachTabAction = menu.addAction(QIcon::fromTheme(QStringLiteral("tab-detach")), i18nc("@action:inmenu", "Detach Tab"));
+        QAction* closeOtherTabsAction = menu.addAction(QIcon::fromTheme(QStringLiteral("tab-close-other")), i18nc("@action:inmenu", "Close Other Tabs"));
+        QAction* closeTabAction = menu.addAction(QIcon::fromTheme(QStringLiteral("tab-close")), i18nc("@action:inmenu", "Close Tab"));
 
         QAction* selectedAction = menu.exec(event->globalPos());
         if (selectedAction == newTabAction) {