Skip to content

Commit 81d8a13

Browse files
committed
fix: ensure preview icon will use icon from theme as fallback
确保窗口预览图会使用来自图标主题的名称作为 fallback PMS: BUG-335563 Log:
1 parent 72f8b43 commit 81d8a13

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

panels/dock/taskmanager/x11preview.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ X11WindowPreviewContainer::X11WindowPreviewContainer(X11WindowMonitor *monitor,
391391
if (iconData.toString().isEmpty()) {
392392
iconData = enter.data(TaskManager::IconNameRole);
393393
}
394-
updatePreviewIconFromBase64(iconData.toString());
394+
updatePreviewIconFromString(iconData.toString());
395395
updatePreviewTitle(enter.data(TaskManager::WinTitleRole).toString());
396396
});
397397
}
@@ -463,7 +463,7 @@ void X11WindowPreviewContainer::showPreviewWithModel(QAbstractItemModel *sourceM
463463
if (iconData.toString().isEmpty()) {
464464
iconData = firstIndex.data(TaskManager::IconNameRole);
465465
}
466-
updatePreviewIconFromBase64(iconData.toString());
466+
updatePreviewIconFromString(iconData.toString());
467467
updatePreviewTitle(firstIndex.data(TaskManager::WinTitleRole).toString());
468468
updateSize(sourceModel->rowCount());
469469
} else {
@@ -761,17 +761,24 @@ bool X11WindowPreviewContainer::eventFilter(QObject *watched, QEvent *event)
761761
return false;
762762
}
763763

764-
void X11WindowPreviewContainer::updatePreviewIconFromBase64(const QString &base64Data)
764+
void X11WindowPreviewContainer::updatePreviewIconFromString(const QString &stringData)
765765
{
766-
const QStringList strs = base64Data.split("base64,");
767766
QPixmap pix;
767+
const QStringList strs = stringData.split("base64,");
768768
if (strs.size() == 2) {
769+
// is base64 image data
769770
pix.loadFromData(QByteArray::fromBase64(strs.at(1).toLatin1()));
771+
} else {
772+
// is (likely) icon name from theme
773+
pix = QIcon::fromTheme(stringData).pixmap(PREVIEW_TITLE_HEIGHT, PREVIEW_TITLE_HEIGHT);
770774
}
771775

772-
if (!pix.isNull()) {
773-
m_previewIcon->setPixmap(pix);
774-
return;
776+
if (pix.isNull()) {
777+
qCInfo(x11WindowPreview) << "Cannot load icon from string data:" << stringData;
778+
pix = QPixmap(PREVIEW_TITLE_HEIGHT, PREVIEW_TITLE_HEIGHT);
779+
pix.fill(Qt::transparent);
775780
}
781+
782+
m_previewIcon->setPixmap(pix);
776783
}
777784
}

panels/dock/taskmanager/x11preview.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class X11WindowPreviewContainer: public DBlurEffectWidget
8383
inline void updatePreviewTitle(const QString& title);
8484
inline void initUI();
8585
inline void updateSize(int windowCount = -1);
86-
void updatePreviewIconFromBase64(const QString &base64Data);
86+
void updatePreviewIconFromString(const QString &stringData);
8787

8888
public Q_SLOTS:
8989
void updatePosition();

0 commit comments

Comments
 (0)