Skip to content

Commit 84c4146

Browse files
committed
core/desktopentry: fix handling of hidden entries
1 parent 59f5744 commit 84c4146

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/core/desktopentry.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ ParsedDesktopEntryData DesktopEntry::parseText(const QString& id, const QString&
108108
auto finishCategory = [&data, &groupName, &entries]() {
109109
if (groupName == "Desktop Entry") {
110110
if (entries.value("Type").second != "Application") return;
111-
if (entries.value("Hidden").second == "true") return;
112111

113112
for (const auto& [key, pair]: entries.asKeyValueRange()) {
114113
auto& [_, value] = pair;
@@ -118,6 +117,7 @@ ParsedDesktopEntryData DesktopEntry::parseText(const QString& id, const QString&
118117
else if (key == "GenericName") data.genericName = value;
119118
else if (key == "StartupWMClass") data.startupClass = value;
120119
else if (key == "NoDisplay") data.noDisplay = value == "true";
120+
else if (key == "Hidden") data.hidden = value == "true";
121121
else if (key == "Comment") data.comment = value;
122122
else if (key == "Icon") data.icon = value;
123123
else if (key == "Exec") {
@@ -495,6 +495,21 @@ void DesktopEntryManager::onScanCompleted(const QList<ParsedDesktopEntryData>& s
495495
auto newLowercaseEntries = QHash<QString, DesktopEntry*>();
496496

497497
for (const auto& data: scanResults) {
498+
auto lowerId = data.id.toLower();
499+
500+
if (data.hidden) {
501+
if (auto* victim = newEntries.take(data.id)) victim->deleteLater();
502+
newLowercaseEntries.remove(lowerId);
503+
504+
if (auto it = oldEntries.find(data.id); it != oldEntries.end()) {
505+
it.value()->deleteLater();
506+
oldEntries.erase(it);
507+
}
508+
509+
qCDebug(logDesktopEntry) << "Masking hidden desktop entry" << data.id;
510+
continue;
511+
}
512+
498513
DesktopEntry* dentry = nullptr;
499514

500515
if (auto it = oldEntries.find(data.id); it != oldEntries.end()) {
@@ -516,7 +531,6 @@ void DesktopEntryManager::onScanCompleted(const QList<ParsedDesktopEntryData>& s
516531

517532
qCDebug(logDesktopEntry) << "Found desktop entry" << data.id;
518533

519-
auto lowerId = data.id.toLower();
520534
auto conflictingId = newEntries.contains(data.id);
521535

522536
if (conflictingId) {

src/core/desktopentry.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ struct ParsedDesktopEntryData {
3333
QString genericName;
3434
QString startupClass;
3535
bool noDisplay = false;
36+
bool hidden = false;
3637
QString comment;
3738
QString icon;
3839
QString execString;

0 commit comments

Comments
 (0)