]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistcontainer.cpp
Improve Touch support
[dolphin.git] / src / kitemviews / kitemlistcontainer.cpp
index dfd5e8a0483f0e5e2fc6cd9fc036c061668d84f4..77847bcc7967576119898b7432d6179b6c9ab9be 100644 (file)
@@ -17,6 +17,7 @@
 #include <QGraphicsScene>
 #include <QGraphicsView>
 #include <QScrollBar>
+#include <QScroller>
 #include <QStyleOption>
 
 /**
@@ -54,7 +55,8 @@ KItemListContainer::KItemListContainer(KItemListController* controller, QWidget*
     QAbstractScrollArea(parent),
     m_controller(controller),
     m_horizontalSmoothScroller(nullptr),
-    m_verticalSmoothScroller(nullptr)
+    m_verticalSmoothScroller(nullptr),
+    m_scroller(nullptr)
 {
     Q_ASSERT(controller);
     controller->setParent(this);
@@ -76,6 +78,13 @@ KItemListContainer::KItemListContainer(KItemListController* controller, QWidget*
             this, &KItemListContainer::slotModelChanged);
     connect(controller, &KItemListController::viewChanged,
             this, &KItemListContainer::slotViewChanged);
+
+    m_scroller = QScroller::scroller(viewport());
+    m_scroller->grabGesture(viewport());
+    connect(controller, &KItemListController::scrollerStop,
+            this, &KItemListContainer::stopScroller);
+    connect(m_scroller, &QScroller::stateChanged,
+            controller, &KItemListController::slotStateChanged);
 }
 
 KItemListContainer::~KItemListContainer()
@@ -325,6 +334,11 @@ void KItemListContainer::updateItemOffsetScrollBar()
     }
 }
 
+void KItemListContainer::stopScroller()
+{
+    m_scroller->stop();
+}
+
 void KItemListContainer::updateGeometries()
 {
     QRect rect = geometry();