]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistcontainer.cpp
GIT_SILENT Sync po/docbooks with svn
[dolphin.git] / src / kitemviews / kitemlistcontainer.cpp
index ff12aee7ca0492ad7d2ed62f3331ac821b5d9108..3ec56e5f10c57da4423ac4ade5f79f0682b8d06e 100644 (file)
@@ -13,7 +13,7 @@
 #include "private/kitemlistsmoothscroller.h"
 
 #ifndef QT_NO_ACCESSIBILITY
-#include <QAccessibleEvent>
+#include "accessibility/kitemlistviewaccessible.h"
 #endif
 #include <QApplication>
 #include <QFontMetrics>
@@ -202,11 +202,11 @@ void KItemListContainer::focusInEvent(QFocusEvent *event)
         // We need to set the focus to the view or accessibility software will only announce the container (which has no information available itself).
         // For some reason actively setting the focus to the view needs to be delayed or the focus will immediately go back to this container.
         QTimer::singleShot(0, this, [this, view]() {
-            view->setFocus();
+            if (!isAncestorOf(QApplication::focusWidget())) {
+                view->setFocus();
+            }
 #ifndef QT_NO_ACCESSIBILITY
-            QAccessibleEvent accessibleFocusInEvent(this, QAccessible::Focus);
-            accessibleFocusInEvent.setChild(0);
-            QAccessible::updateAccessibility(&accessibleFocusInEvent);
+            static_cast<KItemListViewAccessible *>(QAccessible::queryAccessibleInterface(view))->setAccessibleFocusAndAnnounceAll();
 #endif
         });
     }
@@ -286,7 +286,6 @@ void KItemListContainer::updateScrollOffsetScrollBar()
 
     KItemListSmoothScroller *smoothScroller = nullptr;
     QScrollBar *scrollOffsetScrollBar = nullptr;
-    int singleStep = 0;
     int pageStep = 0;
     int maximum = 0;
     if (view->scrollOrientation() == Qt::Vertical) {
@@ -296,13 +295,6 @@ void KItemListContainer::updateScrollOffsetScrollBar()
         }
         scrollOffsetScrollBar = verticalScrollBar();
 
-        // 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();
@@ -318,11 +310,11 @@ void KItemListContainer::updateScrollOffsetScrollBar()
             return;
         }
         scrollOffsetScrollBar = horizontalScrollBar();
-        singleStep = view->itemSize().width();
         pageStep = view->size().width();
         maximum = qMax(0, int(view->maximumScrollOffset() - view->size().width()));
     }
 
+    const int singleStep = view->scrollSingleStep();
     const int value = view->scrollOffset();
     if (smoothScroller->requestScrollBarUpdate(maximum)) {
         const bool updatePolicy = (scrollOffsetScrollBar->maximum() > 0 && maximum == 0) || horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOn;