]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemlistview.cpp
Merge remote-tracking branch 'fork/work/zakharafoniam/useful-groups'
[dolphin.git] / src / kitemviews / kfileitemlistview.cpp
index e2a27a5ea018bb0ec4d834ab2cd6da357caa9383..d58a1a8baf3ac982d82135f1ed1ba55a2ae41404 100644 (file)
@@ -9,6 +9,7 @@
 #include "kfileitemlistwidget.h"
 #include "kfileitemmodel.h"
 #include "kfileitemmodelrolesupdater.h"
+#include "private/kitemviewsutils.h"
 #include "private/kpixmapmodifier.h"
 
 #include <KIconLoader>
@@ -41,7 +42,6 @@ KFileItemListView::KFileItemListView(QGraphicsWidget *parent)
     , m_modelRolesUpdater(nullptr)
     , m_updateVisibleIndexRangeTimer(nullptr)
     , m_updateIconSizeTimer(nullptr)
-    , m_scanDirectories(true)
 {
     setAcceptDrops(true);
 
@@ -119,19 +119,6 @@ qlonglong KFileItemListView::localFileSizePreviewLimit() const
     return m_modelRolesUpdater ? m_modelRolesUpdater->localFileSizePreviewLimit() : 0;
 }
 
-void KFileItemListView::setScanDirectories(bool enabled)
-{
-    m_scanDirectories = enabled;
-    if (m_modelRolesUpdater) {
-        m_modelRolesUpdater->setScanDirectories(m_scanDirectories);
-    }
-}
-
-bool KFileItemListView::scanDirectories()
-{
-    return m_scanDirectories;
-}
-
 QPixmap KFileItemListView::createDragPixmap(const KItemSet &indexes) const
 {
     if (!model()) {
@@ -171,7 +158,7 @@ QPixmap KFileItemListView::createDragPixmap(const KItemSet &indexes) const
         yCount = xCount;
     }
 
-    const qreal dpr = scene()->views()[0]->devicePixelRatio();
+    const qreal dpr = KItemViewsUtils::devicePixelRatio(this);
     // Draw the selected items into the grid cells.
     QPixmap dragPixmap(QSize(xCount * size + xCount, yCount * size + yCount) * dpr);
     dragPixmap.setDevicePixelRatio(dpr);
@@ -269,7 +256,7 @@ void KFileItemListView::onModelChanged(KItemModelBase *current, KItemModelBase *
     if (current) {
         m_modelRolesUpdater = new KFileItemModelRolesUpdater(static_cast<KFileItemModel *>(current), this);
         m_modelRolesUpdater->setIconSize(availableIconSize());
-        m_modelRolesUpdater->setScanDirectories(scanDirectories());
+        m_modelRolesUpdater->setDevicePixelRatio(KItemViewsUtils::devicePixelRatio(this));
 
         applyRolesToModel();
     }
@@ -341,6 +328,31 @@ void KFileItemListView::resizeEvent(QGraphicsSceneResizeEvent *event)
     triggerVisibleIndexRangeUpdate();
 }
 
+void KFileItemListView::focusInEvent(QFocusEvent *event)
+{
+    Q_UNUSED(event)
+    updateSelectedWidgets();
+}
+
+void KFileItemListView::focusOutEvent(QFocusEvent *event)
+{
+    Q_UNUSED(event)
+    updateSelectedWidgets();
+}
+
+void KFileItemListView::updateSelectedWidgets()
+{
+    const auto visibleWidgets = visibleItemListWidgets();
+    for (KItemListWidget *widget : visibleWidgets) {
+        if (widget->isSelected()) {
+            auto w = qobject_cast<KFileItemListWidget *>(widget);
+            if (w) {
+                w->forceUpdate();
+            }
+        }
+    }
+}
+
 void KFileItemListView::slotItemsRemoved(const KItemRangeList &itemRanges)
 {
     KStandardItemListView::slotItemsRemoved(itemRanges);
@@ -404,6 +416,7 @@ void KFileItemListView::updateIconSize()
     }
 
     m_modelRolesUpdater->setIconSize(availableIconSize());
+    m_modelRolesUpdater->setDevicePixelRatio(KItemViewsUtils::devicePixelRatio(this));
 
     // Update the visible index range (which has most likely changed after the
     // icon size change) before unpausing m_modelRolesUpdater.
@@ -439,8 +452,9 @@ void KFileItemListView::applyRolesToModel()
         roles.insert("expandedParentsCount");
     }
 
-    // Assure that the role that is used for sorting will be determined
+    // Assure that the roles used for sorting and grouping will be determined
     roles.insert(fileItemModel->sortRole());
+    roles.insert(fileItemModel->groupRole());
 
     fileItemModel->setRoles(roles);
     m_modelRolesUpdater->setRoles(roles);
@@ -457,3 +471,5 @@ QSize KFileItemListView::availableIconSize() const
 
     return QSize(iconSize, iconSize);
 }
+
+#include "moc_kfileitemlistview.cpp"