- const QItemSelectionModel* selModel = selectionModel();
- const QModelIndex currentIndex = selModel->currentIndex();
- const bool triggerItem = currentIndex.isValid()
- && (event->key() == Qt::Key_Return)
- && (selModel->selectedIndexes().count() <= 1);
- if (triggerItem) {
- m_controller->triggerItem(currentIndex);
+void DolphinIconsView::wheelEvent(QWheelEvent* event)
+{
+ if (m_selectionManager != 0) {
+ m_selectionManager->reset();
+ }
+
+ // let Ctrl+wheel events propagate to the DolphinView for icon zooming
+ if (event->modifiers() & Qt::ControlModifier) {
+ event->ignore();
+ return;
+ }
+
+ horizontalScrollBar()->setSingleStep(m_itemSize.width() / 10);
+ verticalScrollBar()->setSingleStep(m_itemSize.height() / 10);
+
+ KCategorizedView::wheelEvent(event);
+ // if the icons are aligned left to right, the vertical wheel event should
+ // be applied to the horizontal scrollbar
+ const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
+ const bool scrollHorizontal = (event->orientation() == Qt::Vertical) &&
+ (settings->arrangement() == QListView::LeftToRight);
+ if (scrollHorizontal) {
+ QWheelEvent horizEvent(event->pos(),
+ event->delta(),
+ event->buttons(),
+ event->modifiers(),
+ Qt::Horizontal);
+ QApplication::sendEvent(horizontalScrollBar(), &horizEvent);