From 9aa0ef6e185d254f5e5870a05877a04c68cf7dce Mon Sep 17 00:00:00 2001 From: Freyja-moth Date: Thu, 30 Oct 2025 13:14:02 +0000 Subject: [PATCH 1/3] Moved `sort` method from `ContentDirectoryOrder` to `ContentDirectory` --- .../bevy_asset_browser/src/lib.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bevy_editor_panes/bevy_asset_browser/src/lib.rs b/bevy_editor_panes/bevy_asset_browser/src/lib.rs index ebb770c..70775ee 100644 --- a/bevy_editor_panes/bevy_asset_browser/src/lib.rs +++ b/bevy_editor_panes/bevy_asset_browser/src/lib.rs @@ -103,15 +103,6 @@ pub enum DirectoryContentOrder { /// Ordered reverse alphabetically with respect to folders ReverseAlphabetical, } -impl DirectoryContentOrder { - /// Sorts a given [`DirectoryContent`] with the current method - pub fn sort(&self, content: &mut DirectoryContent) { - match self { - Self::Alphabetical => content.0.sort_by(alphabetical_sort), - Self::ReverseAlphabetical => content.0.sort_by(reverse_alphabetical_sort), - } - } -} /// One entry of [`DirectoryContent`] #[derive(Debug, Clone, PartialEq, Eq)] @@ -127,6 +118,15 @@ pub enum Entry { /// The content of the directory pointed by [`AssetBrowserLocation`] #[derive(Resource, Default, Debug, Clone, PartialEq, Eq)] pub struct DirectoryContent(pub Vec); +impl DirectoryContent { + /// Sorts the directory by the given [`DirectoryContentOrder`] + pub fn sort(&mut self, order: &DirectoryContentOrder) { + match order { + DirectoryContentOrder::Alphabetical => self.0.sort_by(alphabetical_sort), + DirectoryContentOrder::ReverseAlphabetical => self.0.sort_by(reverse_alphabetical_sort), + } + } +} /// Check if the [`DirectoryContent`] has changed, which relate to the content of the current [`AssetBrowserLocation`] pub(crate) fn directory_content_as_changed(directory_content: Res) -> bool { From 38eff5068aa4cb8219dd08479911740899df4ed9 Mon Sep 17 00:00:00 2001 From: Freyja-moth Date: Thu, 30 Oct 2025 13:15:28 +0000 Subject: [PATCH 2/3] Sort content directory whenever it is changed, not just when it is inserted --- bevy_editor_panes/bevy_asset_browser/src/io/task.rs | 5 +---- bevy_editor_panes/bevy_asset_browser/src/lib.rs | 8 ++++++-- .../bevy_asset_browser/src/ui/directory_content.rs | 11 ++++++++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/bevy_editor_panes/bevy_asset_browser/src/io/task.rs b/bevy_editor_panes/bevy_asset_browser/src/io/task.rs index 0a6f04d..0cc48d3 100644 --- a/bevy_editor_panes/bevy_asset_browser/src/io/task.rs +++ b/bevy_editor_panes/bevy_asset_browser/src/io/task.rs @@ -20,12 +20,9 @@ pub(crate) fn fetch_task_is_running( pub(crate) fn poll_task( mut commands: Commands, mut task_query: Query<(Entity, &mut FetchDirectoryContentTask)>, - content_order: Res, ) { let (task_entity, mut task) = task_query.single_mut().unwrap(); - if let Some(mut content) = block_on(poll_once(&mut task.0)) { - content_order.sort(&mut content); - + if let Some(content) = block_on(poll_once(&mut task.0)) { commands.entity(task_entity).despawn(); commands.insert_resource(content); } diff --git a/bevy_editor_panes/bevy_asset_browser/src/lib.rs b/bevy_editor_panes/bevy_asset_browser/src/lib.rs index 70775ee..f52fedb 100644 --- a/bevy_editor_panes/bevy_asset_browser/src/lib.rs +++ b/bevy_editor_panes/bevy_asset_browser/src/lib.rs @@ -57,9 +57,13 @@ impl Plugin for AssetBrowserPanePlugin { ) .add_systems( Update, - ui::directory_content::refresh_ui + ( + ui::directory_content::sort_directory_content, + ui::directory_content::refresh_ui, + ) .run_if(directory_content_as_changed) - .after(io::task::poll_task), + .after(io::task::poll_task) + .chain(), ) .add_systems( Update, diff --git a/bevy_editor_panes/bevy_asset_browser/src/ui/directory_content.rs b/bevy_editor_panes/bevy_asset_browser/src/ui/directory_content.rs index e9edc11..b020d20 100644 --- a/bevy_editor_panes/bevy_asset_browser/src/ui/directory_content.rs +++ b/bevy_editor_panes/bevy_asset_browser/src/ui/directory_content.rs @@ -3,7 +3,9 @@ use bevy_context_menu::{ContextMenu, ContextMenuOption}; use bevy_editor_styles::Theme; use bevy_scroll_box::{ScrollBox, ScrollBoxContent, spawn_scroll_box}; -use crate::{AssetBrowserLocation, DefaultSourceFilePath, DirectoryContent, Entry, io}; +use crate::{ + AssetBrowserLocation, DefaultSourceFilePath, DirectoryContent, DirectoryContentOrder, Entry, io, +}; use crate::ui::nodes::{spawn_file_node, spawn_folder_node, spawn_source_node}; @@ -76,6 +78,13 @@ fn asset_browser_context_menu() -> ContextMenu { ]) } +pub(crate) fn sort_directory_content( + mut directory_content: ResMut, + directory_content_order: Res, +) { + directory_content.sort(&directory_content_order); +} + /// Refresh the UI with the content of the current [`AssetBrowserLocation`] pub(crate) fn refresh_ui( mut commands: Commands, From 18320a15fce45af14fbbc9d52512b66a69f10937 Mon Sep 17 00:00:00 2001 From: Freyja-moth Date: Thu, 30 Oct 2025 13:39:01 +0000 Subject: [PATCH 3/3] Removed unnecessary import --- bevy_editor_panes/bevy_asset_browser/src/io/task.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bevy_editor_panes/bevy_asset_browser/src/io/task.rs b/bevy_editor_panes/bevy_asset_browser/src/io/task.rs index 0cc48d3..ba7b891 100644 --- a/bevy_editor_panes/bevy_asset_browser/src/io/task.rs +++ b/bevy_editor_panes/bevy_asset_browser/src/io/task.rs @@ -1,4 +1,4 @@ -use crate::{AssetBrowserLocation, DirectoryContent, DirectoryContentOrder, Entry}; +use crate::{AssetBrowserLocation, DirectoryContent, Entry}; use bevy::{ asset::io::AssetSourceBuilders, prelude::*,