@@ -108,7 +108,6 @@ ParsedDesktopEntryData DesktopEntry::parseText(const QString& id, const QString&
108
108
auto finishCategory = [&data, &groupName, &entries]() {
109
109
if (groupName == " Desktop Entry" ) {
110
110
if (entries.value (" Type" ).second != " Application" ) return ;
111
- if (entries.value (" Hidden" ).second == " true" ) return ;
112
111
113
112
for (const auto & [key, pair]: entries.asKeyValueRange ()) {
114
113
auto & [_, value] = pair;
@@ -118,6 +117,7 @@ ParsedDesktopEntryData DesktopEntry::parseText(const QString& id, const QString&
118
117
else if (key == " GenericName" ) data.genericName = value;
119
118
else if (key == " StartupWMClass" ) data.startupClass = value;
120
119
else if (key == " NoDisplay" ) data.noDisplay = value == " true" ;
120
+ else if (key == " Hidden" ) data.hidden = value == " true" ;
121
121
else if (key == " Comment" ) data.comment = value;
122
122
else if (key == " Icon" ) data.icon = value;
123
123
else if (key == " Exec" ) {
@@ -495,6 +495,21 @@ void DesktopEntryManager::onScanCompleted(const QList<ParsedDesktopEntryData>& s
495
495
auto newLowercaseEntries = QHash<QString, DesktopEntry*>();
496
496
497
497
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
+
498
513
DesktopEntry* dentry = nullptr ;
499
514
500
515
if (auto it = oldEntries.find (data.id ); it != oldEntries.end ()) {
@@ -516,7 +531,6 @@ void DesktopEntryManager::onScanCompleted(const QList<ParsedDesktopEntryData>& s
516
531
517
532
qCDebug (logDesktopEntry) << " Found desktop entry" << data.id ;
518
533
519
- auto lowerId = data.id .toLower ();
520
534
auto conflictingId = newEntries.contains (data.id );
521
535
522
536
if (conflictingId) {
0 commit comments