From: Nicolas Fella Date: Fri, 26 Jul 2024 22:11:31 +0000 (+0200) Subject: Port from KIconLoader::drawOverlays to KIconUtils::addOverlays X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/cebcf8dbb3ff310aa0761ad452e4ca79278d7831 Port from KIconLoader::drawOverlays to KIconUtils::addOverlays The latter is what most other projects use --- diff --git a/CMakeLists.txt b/CMakeLists.txt index d39984b78..0f997225f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,6 +76,7 @@ find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS WindowSystem WidgetsAddons Codecs + GuiAddons ) find_package(KF6UserFeedback ${KF6_MIN_VERSION}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 29eef5753..bbf882a8a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -203,6 +203,7 @@ target_link_libraries( Qt6::DBus Qt6::Gui KF6::I18n + KF6::GuiAddons KF6::IconThemes KF6::KIOCore KF6::KIOWidgets @@ -449,6 +450,7 @@ target_include_directories(dolphinstatic SYSTEM PRIVATE ${PHONON_INCLUDES}) target_link_libraries(dolphinstatic dolphinprivate KF6::CoreAddons + KF6::GuiAddons KF6::KCMUtils KF6::DBusAddons KF6::Notifications diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 0ff431ac9..ac14ed795 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -557,15 +558,13 @@ void KFileItemModelRolesUpdater::slotGotPreview(const KFileItem &item, const QPi const QStringList overlays = data["iconOverlays"].toStringList(); // Strangely KFileItem::overlays() returns empty string-values, so // we need to check first whether an overlay must be drawn at all. - // It is more efficient to do it here, as KIconLoader::drawOverlays() - // assumes that an overlay will be drawn and has some additional - // setup time. if (!scaledPixmap.isNull()) { for (const QString &overlay : overlays) { if (!overlay.isEmpty()) { // There is at least one overlay, draw all overlays above m_pixmap // and cancel the check - KIconLoader::global()->drawOverlays(overlays, scaledPixmap, KIconLoader::Desktop); + const QSize size = scaledPixmap.size(); + scaledPixmap = KIconUtils::addOverlays(scaledPixmap, overlays).pixmap(size); break; } } diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index e3e925c03..c8a6955b9 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include @@ -1647,30 +1648,12 @@ QPixmap KStandardItemListWidget::pixmapForIcon(const QString &name, const QStrin // Strangely KFileItem::overlays() returns empty string-values, so // we need to check first whether an overlay must be drawn at all. - // It is more efficient to do it here, as KIconLoader::drawOverlays() - // assumes that an overlay will be drawn and has some additional - // setup time. for (const QString &overlay : overlays) { if (!overlay.isEmpty()) { - int state = KIconLoader::DefaultState; - - switch (mode) { - case QIcon::Normal: - break; - case QIcon::Active: - state = KIconLoader::ActiveState; - break; - case QIcon::Disabled: - state = KIconLoader::DisabledState; - break; - case QIcon::Selected: - state = KIconLoader::SelectedState; - break; - } - // There is at least one overlay, draw all overlays above m_pixmap // and cancel the check - KIconLoader::global()->drawOverlays(overlays, pixmap, KIconLoader::Desktop, state); + const QSize size = pixmap.size(); + pixmap = KIconUtils::addOverlays(pixmap, overlays).pixmap(size, mode); break; } } diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp index 70d85a402..fc2d0f938 100644 --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -351,8 +352,8 @@ bool InformationPanelContent::gestureEvent(QGestureEvent *event) void InformationPanelContent::showIcon(const KFileItem &item) { m_outdatedPreviewTimer->stop(); - QPixmap pixmap = QIcon::fromTheme(item.iconName()).pixmap(m_preview->size(), devicePixelRatioF()); - KIconLoader::global()->drawOverlays(item.overlays(), pixmap, KIconLoader::Desktop); + QIcon icon = QIcon::fromTheme(item.iconName()); + QPixmap pixmap = KIconUtils::addOverlays(icon, item.overlays()).pixmap(m_preview->size()); m_preview->setPixmap(pixmap); } @@ -360,8 +361,8 @@ void InformationPanelContent::showPreview(const KFileItem &item, const QPixmap & { m_outdatedPreviewTimer->stop(); - QPixmap p = pixmap; - KIconLoader::global()->drawOverlays(item.overlays(), p, KIconLoader::Desktop); + const QSize size = pixmap.size(); + QPixmap p = KIconUtils::addOverlays(pixmap, item.overlays()).pixmap(size); if (m_isVideo) { // adds a play arrow overlay