diff options
| author | Frank Reininghaus <[email protected]> | 2009-10-25 10:41:15 +0000 |
|---|---|---|
| committer | Frank Reininghaus <[email protected]> | 2009-10-25 10:41:15 +0000 |
| commit | 499e8723f4b82ed1e9abbee91594ab8170421e11 (patch) | |
| tree | 1dd1428c806993fd5dcc41a0f41bda5ae7f32017 | |
| parent | 9c2f205a097e043a6ea301d4e17802507c35d4d0 (diff) | |
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
| -rw-r--r-- | src/dolphincolumnview.cpp | 6 | ||||
| -rw-r--r-- | src/dolphindetailsview.cpp | 6 | ||||
| -rw-r--r-- | src/dolphiniconsview.cpp | 6 | ||||
| -rw-r--r-- | src/dolphinview.cpp | 32 | ||||
| -rw-r--r-- | src/dolphinview.h | 1 |
5 files changed, 18 insertions, 33 deletions
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<QWheelEvent*>(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: |
