fix: take user's Added Association into account when hiding apps

This commit is contained in:
Hojjat 2026-06-09 16:50:50 -06:00
parent 4ac289f40a
commit 42577aa467
2 changed files with 21 additions and 6 deletions

View file

@ -2307,7 +2307,7 @@ impl App {
.mime_app_cache
.apps()
.iter()
.filter(|mime_app| !mime_app.no_display)
.filter(|mime_app| !mime_app.no_display())
.filter(|&mime_app| dedupe.insert(&mime_app.id))
.map(|mime_app| (mime_app, MimeAppMatch::Other))
.collect::<Vec<_>>();

View file

@ -185,7 +185,7 @@ pub struct MimeApp {
icon_name: Box<str>,
icon: std::sync::OnceLock<widget::icon::Handle>,
is_default: Arc<AtomicBool>,
pub no_display: bool,
no_display: Arc<AtomicBool>,
}
impl MimeApp {
@ -200,7 +200,11 @@ impl MimeApp {
}
pub fn is_default(&self) -> bool {
self.is_default.load(atomic::Ordering::SeqCst)
self.is_default.load(atomic::Ordering::Relaxed)
}
pub fn no_display(&self) -> bool {
self.no_display.load(atomic::Ordering::Relaxed)
}
pub fn icon(&self) -> widget::icon::Handle {
@ -277,9 +281,7 @@ impl MimeAppCache {
icon_name: desktop_entry.icon().unwrap_or_default().into(),
icon: std::sync::OnceLock::new(),
is_default: Arc::new(AtomicBool::new(false)),
no_display: desktop_entry
.mime_type()
.is_none_or(|supported| supported.is_empty()),
no_display: Arc::new(AtomicBool::new(false)),
});
tracing::info!(target: "mime-apps", id = app.id, "detected desktop entry");
@ -364,6 +366,19 @@ impl MimeAppCache {
tracing::debug!(target: "mime-apps", mime = mime.essence_str(), apps = ?(cache.iter().map(|app| &*app.id).collect::<Vec<&str>>()), "mime defaults found")
}
let associated: rustc_hash::FxHashSet<&str> = self
.cache
.values()
.flatten()
.map(|app| app.id.as_str())
.collect();
for app in &self.apps {
app.no_display.store(
!associated.contains(app.id.as_str()),
atomic::Ordering::Relaxed,
);
}
let elapsed = start.elapsed();
tracing::info!(target: "mime-apps", "loaded mime app cache in {elapsed:?}");
}