X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/cd2e64154fd5446a7e19aff4cb147efe2f2ba31e..b4e80645e8e39ef7fcc1545136bad06ab3dd5f3e:/src/kitemviews/kfileitemlistview.cpp diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp index 668ebdfb2..d58a1a8ba 100644 --- a/src/kitemviews/kfileitemlistview.cpp +++ b/src/kitemviews/kfileitemlistview.cpp @@ -9,6 +9,7 @@ #include "kfileitemlistwidget.h" #include "kfileitemmodel.h" #include "kfileitemmodelrolesupdater.h" +#include "private/kitemviewsutils.h" #include "private/kpixmapmodifier.h" #include @@ -157,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); @@ -255,6 +256,7 @@ void KFileItemListView::onModelChanged(KItemModelBase *current, KItemModelBase * if (current) { m_modelRolesUpdater = new KFileItemModelRolesUpdater(static_cast(current), this); m_modelRolesUpdater->setIconSize(availableIconSize()); + m_modelRolesUpdater->setDevicePixelRatio(KItemViewsUtils::devicePixelRatio(this)); applyRolesToModel(); } @@ -326,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(widget); + if (w) { + w->forceUpdate(); + } + } + } +} + void KFileItemListView::slotItemsRemoved(const KItemRangeList &itemRanges) { KStandardItemListView::slotItemsRemoved(itemRanges); @@ -389,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. @@ -424,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); @@ -442,3 +471,5 @@ QSize KFileItemListView::availableIconSize() const return QSize(iconSize, iconSize); } + +#include "moc_kfileitemlistview.cpp"