]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Do not zoom the icons if the user presses Control and the left mouse
authorFrank Reininghaus <frank78ac@googlemail.com>
Sun, 25 Oct 2009 10:41:15 +0000 (10:41 +0000)
committerFrank Reininghaus <frank78ac@googlemail.com>
Sun, 25 Oct 2009 10:41:15 +0000 (10:41 +0000)
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

src/dolphincolumnview.cpp
src/dolphindetailsview.cpp
src/dolphiniconsview.cpp
src/dolphinview.cpp
src/dolphinview.h

index 2d3bcb826d7165a5bfb4160151a0c518d496e1bb..9157c7ed441f6375381e32b70e79a5509b7fb57c 100644 (file)
@@ -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);
index 3dca2da28eb0762b3df8dfcd3d06f7cb0a110f3e..9d32dd247fd72a7d26a3834dd1d7d3ac591a5a99 100644 (file)
@@ -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);
index bd070ad1c7dfa9adf7117a6ea96d10e44f54af0f..e7448ed6d5bf606c6afb36fb92dfaf0b1052864c 100644 (file)
@@ -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);
 
index a49aabdd94dc364ad9e3846396e1806639d9d53d..034b81d3fb4001f401734917542f5a11f358afd2 100644 (file)
@@ -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;
     }
index cf0f4636086006bf98f873953c7b34e1cf73ef7a..03154f9501299e9183b2fa822f776e556fc6126a 100644 (file)
@@ -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: