Merge pull request #1482 from pop-os/bug-fixes

Bug fixes
This commit is contained in:
Levi Portenier 2025-12-30 08:59:25 -07:00 committed by GitHub
commit 6d3abf431c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 540 additions and 445 deletions

944
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-files" name = "cosmic-files"
version = "0.1.0" version = "1.0.0"
authors = ["Jeremy Soller <jeremy@system76.com>"] authors = ["Jeremy Soller <jeremy@system76.com>"]
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"
@ -45,7 +45,7 @@ xdg-mime = { git = "https://github.com/ebassi/xdg-mime-rs" }
bzip2 = { version = "0.6", optional = true } #TODO: replace with pure Rust crate bzip2 = { version = "0.6", optional = true } #TODO: replace with pure Rust crate
flate2 = "1.1" flate2 = "1.1"
tar = "0.4.44" tar = "0.4.44"
lzma-rust2 = { version = "0.15", optional = true } lzma-rust2 = { version = "0.15.4", optional = true }
ordermap = { version = "1.0.0", features = ["serde"] } ordermap = { version = "1.0.0", features = ["serde"] }
# Internationalization # Internationalization
i18n-embed = { version = "0.16", features = [ i18n-embed = { version = "0.16", features = [
@ -56,7 +56,7 @@ i18n-embed-fl = "0.10"
rust-embed = "8" rust-embed = "8"
slotmap = "1.0.7" slotmap = "1.0.7"
recently-used-xbel = { git = "https://github.com/pop-os/recently-used-xbel.git" } recently-used-xbel = { git = "https://github.com/pop-os/recently-used-xbel.git" }
zip = "6.0" zip = "7"
uzers = "0.12.1" uzers = "0.12.1"
md-5 = "0.10.6" md-5 = "0.10.6"
png = "0.18" png = "0.18"
@ -65,7 +65,7 @@ num_cpus = "1.17.0"
# Completion-based IO runtime to enable io_uring / IOCP file IO support. # Completion-based IO runtime to enable io_uring / IOCP file IO support.
[dependencies.compio] [dependencies.compio]
version = "0.16.0" version = "0.17.0"
default-features = false default-features = false
features = ["io", "macros", "polling", "runtime"] features = ["io", "macros", "polling", "runtime"]
@ -123,7 +123,7 @@ inherits = "release"
debug = true debug = true
[target.'cfg(unix)'.dependencies] [target.'cfg(unix)'.dependencies]
fork = "0.4" fork = "0.6"
[target.'cfg(target_os = "linux")'.dependencies] [target.'cfg(target_os = "linux")'.dependencies]
procfs = "0.18" procfs = "0.18"

6
debian/changelog vendored
View file

@ -1,3 +1,9 @@
cosmic-files (1.0.0) jammy; urgency=medium
* Stable release.
-- Jeremy Soller <jeremy@system76.com> Mon, 29 Dec 2025 15:12:39 -0700
cosmic-files (0.1.0) jammy; urgency=medium cosmic-files (0.1.0) jammy; urgency=medium
* Initial release. * Initial release.

View file

@ -4153,10 +4153,19 @@ impl Application for App {
tab.sort_name = sort.0; tab.sort_name = sort.0;
tab.sort_direction = sort.1; tab.sort_direction = sort.1;
let mut tasks = Vec::with_capacity(2);
if let Some(selection_paths) = selection_paths { if let Some(selection_paths) = selection_paths {
tab.select_paths(selection_paths); tab.select_paths(selection_paths);
// Ensure selected path is scrolled to after redraw
tasks.push(Task::done(cosmic::action::app(Message::TabMessage(
Some(entity),
tab::Message::ScrollToFocused,
))));
} }
return clipboard::read_data::<ClipboardPaste>().map(|p| {
tasks.push(clipboard::read_data::<ClipboardPaste>().map(|p| {
cosmic::action::app(Message::CutPaths(match p { cosmic::action::app(Message::CutPaths(match p {
Some(s) => match s.kind { Some(s) => match s.kind {
ClipboardKind::Copy => Vec::new(), ClipboardKind::Copy => Vec::new(),
@ -4164,7 +4173,9 @@ impl Application for App {
}, },
None => Vec::new(), None => Vec::new(),
})) }))
}); }));
return Task::batch(tasks);
} }
} }
} }

View file

@ -50,6 +50,8 @@ fn gio_icon_to_path(icon: &gio::Icon, size: u16) -> Option<PathBuf> {
fn items(monitor: &gio::VolumeMonitor, sizes: IconSizes) -> MounterItems { fn items(monitor: &gio::VolumeMonitor, sizes: IconSizes) -> MounterItems {
let mut items: MounterItems = (monitor.mounts().into_iter()) let mut items: MounterItems = (monitor.mounts().into_iter())
.enumerate() .enumerate()
// Hide shadowed mounts
.filter(|(_, mount)| !mount.is_shadowed())
.map(|(i, mount)| { .map(|(i, mount)| {
let root = MountExt::root(&mount); let root = MountExt::root(&mount);
let is_remote = root let is_remote = root

View file

@ -1664,6 +1664,7 @@ pub enum Message {
Resize(Rectangle), Resize(Rectangle),
Scroll(Viewport), Scroll(Viewport),
ScrollTab(f32), ScrollTab(f32),
ScrollToFocused,
SearchContext(Location, SearchContextWrapper), SearchContext(Location, SearchContextWrapper),
SearchReady(bool), SearchReady(bool),
SelectAll, SelectAll,
@ -3880,6 +3881,13 @@ impl Tab {
.into(), .into(),
)); ));
} }
Message::ScrollToFocused => {
if let Some(offset) = self.select_focus_scroll() {
commands.push(Command::Iced(
scrollable::scroll_to(self.scrollable_id.clone(), offset).into(),
));
}
}
Message::SearchContext(location, context) => { Message::SearchContext(location, context) => {
if location == self.location { if location == self.location {
self.search_context = context.0; self.search_context = context.0;