diff --git a/src/compositor.rs b/src/compositor.rs index 0328260a..a6fe9454 100644 --- a/src/compositor.rs +++ b/src/compositor.rs @@ -57,9 +57,10 @@ use { tasks::{self, handle_const_40hz_latch, idle}, tracy::enable_profiler, tree::{ - DisplayNode, NodeIds, OutputNode, TearingMode, Transform, VrrMode, WorkspaceNode, - container_layout, container_render_positions, container_render_titles, float_layout, - float_titles, output_render_data, placeholder_render_textures, + DisplayNode, NodeIds, OutputNode, TearingMode, Transform, VrrMode, + WorkspaceDisplayOrder, WorkspaceNode, container_layout, container_render_positions, + container_render_titles, float_layout, float_titles, output_render_data, + placeholder_render_textures, }, user_session::import_environment, utils::{ @@ -82,7 +83,7 @@ use { }, ahash::AHashSet, forker::ForkerProxy, - jay_config::{_private::DEFAULT_SEAT_NAME, workspace::WorkspaceDisplayOrder}, + jay_config::_private::DEFAULT_SEAT_NAME, std::{ cell::{Cell, RefCell}, env, diff --git a/src/config/handler.rs b/src/config/handler.rs index 89c74bf3..a82088c5 100644 --- a/src/config/handler.rs +++ b/src/config/handler.rs @@ -1465,7 +1465,7 @@ impl ConfigProxyHandler { } fn handle_set_workspace_display_order(&self, order: WorkspaceDisplayOrder) { - self.state.workspace_display_order.set(order); + self.state.workspace_display_order.set(order.into()); for output in self.state.root.outputs.lock().values() { output.handle_workspace_display_order_update(); } diff --git a/src/state.rs b/src/state.rs index c7a52da6..b9908d62 100644 --- a/src/state.rs +++ b/src/state.rs @@ -97,7 +97,8 @@ use { ContainerNode, ContainerSplit, Direction, DisplayNode, FindTreeUsecase, FloatNode, FoundNode, LatchListener, Node, NodeIds, NodeVisitorBase, OutputNode, PlaceholderNode, TearingMode, TileState, ToplevelData, ToplevelNode, ToplevelNodeBase, Transform, - VrrMode, WorkspaceNode, WsMoveConfig, generic_node_visitor, move_ws_to_output, + VrrMode, WorkspaceDisplayOrder, WorkspaceNode, WsMoveConfig, generic_node_visitor, + move_ws_to_output, }, udmabuf::UdmabufHolder, utils::{ @@ -135,7 +136,7 @@ use { }, ahash::AHashMap, bstr::ByteSlice, - jay_config::{PciId, workspace::WorkspaceDisplayOrder}, + jay_config::PciId, std::{ cell::{Cell, RefCell}, fmt::{Debug, Formatter}, diff --git a/src/tree.rs b/src/tree.rs index 14d46773..50a9624b 100644 --- a/src/tree.rs +++ b/src/tree.rs @@ -30,6 +30,7 @@ use { jay_config::{ Direction as JayDirection, video::Transform as ConfigTransform, window::TileState as ConfigTileState, + workspace::WorkspaceDisplayOrder as ConfigWorkspaceDisplayOrder, }, linearize::{Linearize, LinearizeExt}, std::{ @@ -53,6 +54,31 @@ mod toplevel; mod walker; mod workspace; +#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Default, Linearize)] +pub enum WorkspaceDisplayOrder { + #[default] + Manual, + Sorted, +} + +impl From for WorkspaceDisplayOrder { + fn from(value: ConfigWorkspaceDisplayOrder) -> Self { + match value { + ConfigWorkspaceDisplayOrder::Manual => WorkspaceDisplayOrder::Manual, + ConfigWorkspaceDisplayOrder::Sorted => WorkspaceDisplayOrder::Sorted, + } + } +} + +impl Into for WorkspaceDisplayOrder { + fn into(self) -> ConfigWorkspaceDisplayOrder { + match self { + WorkspaceDisplayOrder::Manual => ConfigWorkspaceDisplayOrder::Manual, + WorkspaceDisplayOrder::Sorted => ConfigWorkspaceDisplayOrder::Sorted, + } + } +} + #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Default, Linearize)] pub enum Transform { #[default] diff --git a/src/tree/output.rs b/src/tree/output.rs index a1476001..3c416a00 100644 --- a/src/tree/output.rs +++ b/src/tree/output.rs @@ -47,7 +47,8 @@ use { tree::{ Direction, FindTreeResult, FindTreeUsecase, FoundNode, Node, NodeId, NodeLayerLink, NodeLocation, PinnedNode, StackedNode, TddType, TileDragDestination, Transform, - WorkspaceDragDestination, WorkspaceNode, WorkspaceNodeId, walker::NodeVisitor, + WorkspaceDisplayOrder, WorkspaceDragDestination, WorkspaceNode, WorkspaceNodeId, + walker::NodeVisitor, }, utils::{ asyncevent::AsyncEvent, @@ -66,10 +67,7 @@ use { }, }, ahash::AHashMap, - jay_config::{ - video::{TearingMode as ConfigTearingMode, VrrMode as ConfigVrrMode}, - workspace::WorkspaceDisplayOrder, - }, + jay_config::video::{TearingMode as ConfigTearingMode, VrrMode as ConfigVrrMode}, smallvec::SmallVec, std::{ cell::{Cell, RefCell}, diff --git a/src/tree/workspace.rs b/src/tree/workspace.rs index eb308c08..f60354a4 100644 --- a/src/tree/workspace.rs +++ b/src/tree/workspace.rs @@ -22,8 +22,8 @@ use { tree::{ ContainingNode, Direction, FindTreeResult, FindTreeUsecase, FloatNode, FoundNode, Node, NodeId, NodeLayerLink, NodeLocation, NodeVisitorBase, OutputNode, OutputNodeId, - PlaceholderNode, StackedNode, ToplevelNode, container::ContainerNode, - walker::NodeVisitor, + PlaceholderNode, StackedNode, ToplevelNode, WorkspaceDisplayOrder, + container::ContainerNode, walker::NodeVisitor, }, utils::{ clonecell::CloneCell, @@ -35,7 +35,6 @@ use { }, wire::JayWorkspaceId, }, - jay_config::workspace::WorkspaceDisplayOrder, std::{ cell::{Cell, RefCell}, fmt::Debug,