From: Frank Reininghaus Date: Sun, 25 Oct 2009 10:41:15 +0000 (+0000) Subject: Do not zoom the icons if the user presses Control and the left mouse X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/499e8723f4b82ed1e9abbee91594ab8170421e11?ds=inline Do not zoom the icons if the user presses Control and the left mouse button while using the mouse wheel. The user is probably trying to scroll the view during a rubberband selection in that case. Also simplify the code a bit by handling the icon zooming in DolphinView::eventFilter(). BUG: 190703 svn path=/trunk/KDE/kdebase/apps/; revision=1040021 --- diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp index 2d3bcb826..9157c7ed4 100644 --- a/src/dolphincolumnview.cpp +++ b/src/dolphincolumnview.cpp @@ -340,12 +340,6 @@ void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event) void DolphinColumnView::wheelEvent(QWheelEvent* event) { - // let Ctrl+wheel events propagate to the DolphinView for icon zooming - if (event->modifiers() & Qt::ControlModifier) { - event->ignore(); - return; - } - const int height = m_decorationSize.height(); const int step = (height >= KIconLoader::SizeHuge) ? height / 10 : (KIconLoader::SizeHuge - height) / 2; verticalScrollBar()->setSingleStep(step); diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 3dca2da28..9d32dd247 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -401,12 +401,6 @@ void DolphinDetailsView::resizeEvent(QResizeEvent* event) void DolphinDetailsView::wheelEvent(QWheelEvent* event) { - // let Ctrl+wheel events propagate to the DolphinView for icon zooming - if (event->modifiers() & Qt::ControlModifier) { - event->ignore(); - return; - } - const int height = m_decorationSize.height(); const int step = (height >= KIconLoader::SizeHuge) ? height / 10 : (KIconLoader::SizeHuge - height) / 2; verticalScrollBar()->setSingleStep(step); diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index bd070ad1c..e7448ed6d 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -314,12 +314,6 @@ void DolphinIconsView::keyPressEvent(QKeyEvent* event) void DolphinIconsView::wheelEvent(QWheelEvent* event) { - // 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); diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index a49aabdd9..034b81d3f 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -831,20 +831,6 @@ void DolphinView::mouseReleaseEvent(QMouseEvent* event) setActive(true); } -void DolphinView::wheelEvent(QWheelEvent* event) -{ - if (event->modifiers() & Qt::ControlModifier) { - const int delta = event->delta(); - const int level = zoomLevel(); - if (delta > 0) { - setZoomLevel(level + 1); - } else if (delta < 0) { - setZoomLevel(level - 1); - } - event->accept(); - } -} - bool DolphinView::eventFilter(QObject* watched, QEvent* event) { switch (event->type()) { @@ -870,6 +856,24 @@ bool DolphinView::eventFilter(QObject* watched, QEvent* event) } break; + case QEvent::Wheel: + if (watched == m_viewAccessor.itemView()->viewport()) { + // Ctrl+wheel events should cause icon zooming, but not if the left mouse button is pressed + // (the user is probably trying to scroll during a selection in that case) + QWheelEvent* wheelEvent = static_cast(event); + if (wheelEvent->modifiers() & Qt::ControlModifier && !(wheelEvent->buttons() & Qt::LeftButton)) { + const int delta = wheelEvent->delta(); + const int level = zoomLevel(); + if (delta > 0) { + setZoomLevel(level + 1); + } else if (delta < 0) { + setZoomLevel(level - 1); + } + return true; + } + } + break; + default: break; } diff --git a/src/dolphinview.h b/src/dolphinview.h index cf0f46360..03154f950 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -559,7 +559,6 @@ signals: protected: /** @see QWidget::mouseReleaseEvent */ virtual void mouseReleaseEvent(QMouseEvent* event); - virtual void wheelEvent(QWheelEvent* event); virtual bool eventFilter(QObject* watched, QEvent* event); private slots: