1
0
Fork 0
forked from wry/wry

tree: make FindTreeUsecase handling more explicit

This commit is contained in:
Julian Orth 2025-12-16 20:39:21 +01:00
parent 867172f20b
commit 8d5ac9a2b7
5 changed files with 29 additions and 13 deletions

View file

@ -1073,8 +1073,10 @@ impl OutputNode {
tree: &mut Vec<FoundNode>,
usecase: FindTreeUsecase,
) -> FindTreeResult {
if usecase == FindTreeUsecase::SelectToplevel {
return FindTreeResult::Other;
match usecase {
FindTreeUsecase::None => {}
FindTreeUsecase::SelectToplevel => return FindTreeResult::Other,
FindTreeUsecase::SelectWorkspace => return FindTreeResult::Other,
}
let len = tree.len();
for layer in layers.iter().copied() {
@ -1634,9 +1636,12 @@ impl Node for OutputNode {
usecase: FindTreeUsecase,
) -> FindTreeResult {
if self.state.lock.locked.get() {
if usecase != FindTreeUsecase::SelectToplevel
&& let Some(ls) = self.lock_surface.get()
{
let allow_surface = match usecase {
FindTreeUsecase::None => true,
FindTreeUsecase::SelectToplevel => false,
FindTreeUsecase::SelectWorkspace => false,
};
if allow_surface && let Some(ls) = self.lock_surface.get() {
tree.push(FoundNode {
node: ls.clone(),
x,
@ -1647,7 +1652,12 @@ impl Node for OutputNode {
return FindTreeResult::AcceptsInput;
}
let ws_rect_rel = self.workspace_rect_rel.get();
if usecase == FindTreeUsecase::SelectWorkspace && ws_rect_rel.contains(x, y) {
let select_workspace = match usecase {
FindTreeUsecase::None => false,
FindTreeUsecase::SelectToplevel => false,
FindTreeUsecase::SelectWorkspace => true,
};
if select_workspace && ws_rect_rel.contains(x, y) {
let (x, y) = ws_rect_rel.translate(x, y);
if let Some(ws) = self.workspace.get() {
tree.push(FoundNode {