1
0
Fork 0
forked from wry/wry

tree: add WorkspaceDisplayOrder

This commit is contained in:
Julian Orth 2026-02-24 20:26:57 +01:00
parent 8b0bb61ee0
commit 1677d481f9
6 changed files with 40 additions and 15 deletions

View file

@ -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,

View file

@ -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();
}

View file

@ -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},

View file

@ -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<ConfigWorkspaceDisplayOrder> for WorkspaceDisplayOrder {
fn from(value: ConfigWorkspaceDisplayOrder) -> Self {
match value {
ConfigWorkspaceDisplayOrder::Manual => WorkspaceDisplayOrder::Manual,
ConfigWorkspaceDisplayOrder::Sorted => WorkspaceDisplayOrder::Sorted,
}
}
}
impl Into<ConfigWorkspaceDisplayOrder> 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]

View file

@ -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},

View file

@ -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,