]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistcontainer.cpp
Improve scroll wheel speed by basing it on label height, not icon height
[dolphin.git] / src / kitemviews / kitemlistcontainer.cpp
index 8e64ee493314e8c2cef595dd0756f0690e289d38..b274e75e2f0c18617f193a7a07cacb3f00046e80 100644 (file)
 
 #include "kitemlistcontroller.h"
 #include "kitemlistview.h"
-#include "kitemmodelbase.h"
-
 #include "private/kitemlistsmoothscroller.h"
 
 #include <QApplication>
+#include <QFontMetrics>
 #include <QGraphicsScene>
 #include <QGraphicsView>
 #include <QScrollBar>
-#include <QStyle>
 #include <QStyleOption>
 
-
 /**
  * Replaces the default viewport of KItemListContainer by a
  * non-scrollable viewport. The scrolling is done in an optimized
@@ -190,14 +187,14 @@ void KItemListContainer::wheelEvent(QWheelEvent* event)
 
 void KItemListContainer::slotScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous)
 {
-    Q_UNUSED(previous);
+    Q_UNUSED(previous)
     updateSmoothScrollers(current);
 }
 
 void KItemListContainer::slotModelChanged(KItemModelBase* current, KItemModelBase* previous)
 {
-    Q_UNUSED(current);
-    Q_UNUSED(previous);
+    Q_UNUSED(current)
+    Q_UNUSED(previous)
 }
 
 void KItemListContainer::slotViewChanged(KItemListView* current, KItemListView* previous)
@@ -265,7 +262,14 @@ void KItemListContainer::updateScrollOffsetScrollBar()
     if (view->scrollOrientation() == Qt::Vertical) {
         smoothScroller = m_verticalSmoothScroller;
         scrollOffsetScrollBar = verticalScrollBar();
-        singleStep = view->itemSizeHint().height();
+
+        // Don't scroll super fast when using a wheel mouse:
+        // We want to consider one "line" to be the text label which has a
+        // roughly fixed height rather than using the height of the icon which
+        // may be very tall
+        const QFontMetrics metrics(font());
+        singleStep = metrics.height() * QApplication::wheelScrollLines();
+
         // We cannot use view->size().height() because this height might
         // include the header widget, which is not part of the scrolled area.
         pageStep = view->verticalPageStep();