@@ -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) {
0 commit comments