]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix "Add Network Folder" tooltip icon does not show on Breeze, shows correctly on...
authorDavid Hallas <david@davidhallas.dk>
Wed, 13 Mar 2019 20:10:11 +0000 (21:10 +0100)
committerDavid Hallas <david@davidhallas.dk>
Sun, 17 Mar 2019 18:11:37 +0000 (19:11 +0100)
Summary:
Fix "Add Network Folder" tooltip icon does not show on Breeze, shows correctly
on Breeze Dark. The fix is taken from D19596.

Test Plan:
Open Dolphin with the Breeze theme
Hover the mouse over the "Add Network Folder"
The icon is black on black

BUG: 404858

Reviewers: #dolphin, elvisangelaccio, ngraham

Reviewed By: #dolphin, elvisangelaccio, ngraham

Subscribers: broulik, kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D19738

src/views/tooltips/tooltipmanager.cpp

index 9e79a8f704a424b0e7e8a1c1eb02d9e055ac94da..2990f424931ac30be59e3a70fb45b064d6c19697 100644 (file)
@@ -25,6 +25,7 @@
 #include <KIO/PreviewJob>
 #include <KJobWidgets>
 #include <KToolTipWidget>
+#include <KIconLoader>
 
 #include <QApplication>
 #include <QDesktopWidget>
 #include <QTimer>
 #include <QWindow>
 
+class IconLoaderSingleton {
+public:
+    IconLoaderSingleton() = default;
+
+    KIconLoader self;
+};
+
+Q_GLOBAL_STATIC(IconLoaderSingleton, iconLoader)
+
 ToolTipManager::ToolTipManager(QWidget* parent) :
     QObject(parent),
     m_showToolTipTimer(nullptr),
@@ -167,8 +177,13 @@ void ToolTipManager::previewFailed()
     if (!m_toolTipRequested) {
         return;
     }
-
-    const QPixmap pixmap = QIcon::fromTheme(m_item.iconName()).pixmap(128, 128);
+    QPalette pal;
+    for (auto state : { QPalette::Active, QPalette::Inactive, QPalette::Disabled }) {
+        pal.setBrush(state, QPalette::WindowText, pal.toolTipText());
+        pal.setBrush(state, QPalette::Window, pal.toolTipBase());
+    }
+    iconLoader->self.setCustomPalette(pal);
+    const QPixmap pixmap = KDE::icon(m_item.iconName(), &iconLoader->self).pixmap(128, 128);
     m_fileMetaDataWidget->setPreview(pixmap);
     if (!m_showToolTipTimer->isActive()) {
         showToolTip();