From 4f3dc85bb410f1be97a240b60408cadb11e30e17 Mon Sep 17 00:00:00 2001 From: Simon Gellis Date: Sat, 15 Aug 2026 00:11:37 -0400 Subject: [PATCH] Make extensions case insensitive on linux --- src/filepicker.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/filepicker.rs b/src/filepicker.rs index dbdc57f..bab2d96 100644 --- a/src/filepicker.rs +++ b/src/filepicker.rs @@ -1,4 +1,5 @@ use std::{ + fmt::Write as _, path::PathBuf, sync::{Arc, Weak}, }; @@ -49,6 +50,23 @@ pub struct FileDialogBuilder { impl FileDialogBuilder { pub fn add_filter(self, name: impl Into, extensions: &[impl ToString]) -> Self { + #[cfg(target_os = "linux")] + let exts = extensions + .iter() + .map(|ext| { + let mut normalized = String::new(); + for char in ext.to_string().chars() { + if char.is_ascii_lowercase() { + let _ = write!(&mut normalized, "[{char}{}]", char.to_ascii_uppercase()); + } else { + normalized.push(char); + } + } + normalized + }) + .collect::>(); + #[cfg(target_os = "linux")] + let extensions = &exts; Self { dialog: self.dialog.add_filter(name, extensions), ..self