From 7ff7edaa8fd39f76a5475030076274fb0352f61f Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Wed, 11 Sep 2024 23:58:42 +0200 Subject: [PATCH] xwayland: set output for override redirect windows --- src/ifs/wl_surface/x_surface/xwindow.rs | 3 +++ src/it/test_utils.rs | 1 - src/it/test_utils/test_rect_ext.rs | 11 ----------- src/it/test_utils/test_toplevel_node_ext.rs | 2 +- src/it/tests/t0025_dnd_focus_change.rs | 2 +- src/it/tests/t0027_input_region.rs | 2 +- src/rect.rs | 7 +++++++ 7 files changed, 13 insertions(+), 15 deletions(-) delete mode 100644 src/it/test_utils/test_rect_ext.rs diff --git a/src/ifs/wl_surface/x_surface/xwindow.rs b/src/ifs/wl_surface/x_surface/xwindow.rs index 43755334..c5968d1b 100644 --- a/src/ifs/wl_surface/x_surface/xwindow.rs +++ b/src/ifs/wl_surface/x_surface/xwindow.rs @@ -423,6 +423,9 @@ impl ToplevelNodeBase for Xwindow { if self.data.info.override_redirect.get() { self.data.state.damage(old); self.data.state.damage(*rect); + let (x, y) = rect.center(); + let output = self.data.state.find_closest_output(x, y).0; + self.x.surface.set_output(&output); } else { self.data .state diff --git a/src/it/test_utils.rs b/src/it/test_utils.rs index cb047de7..5b2820aa 100644 --- a/src/it/test_utils.rs +++ b/src/it/test_utils.rs @@ -2,7 +2,6 @@ pub mod test_container_node_ext; pub mod test_expected_event; pub mod test_object_ext; pub mod test_ouput_node_ext; -pub mod test_rect_ext; pub mod test_surface_ext; pub mod test_toplevel_node_ext; pub mod test_window; diff --git a/src/it/test_utils/test_rect_ext.rs b/src/it/test_utils/test_rect_ext.rs deleted file mode 100644 index dac41c91..00000000 --- a/src/it/test_utils/test_rect_ext.rs +++ /dev/null @@ -1,11 +0,0 @@ -use crate::rect::Rect; - -pub trait TestRectExt { - fn center(&self) -> (i32, i32); -} - -impl TestRectExt for Rect { - fn center(&self) -> (i32, i32) { - ((self.x1() + self.x2()) / 2, (self.y1() + self.y2()) / 2) - } -} diff --git a/src/it/test_utils/test_toplevel_node_ext.rs b/src/it/test_utils/test_toplevel_node_ext.rs index 80f679a1..208fd456 100644 --- a/src/it/test_utils/test_toplevel_node_ext.rs +++ b/src/it/test_utils/test_toplevel_node_ext.rs @@ -1,4 +1,4 @@ -use crate::{it::test_utils::test_rect_ext::TestRectExt, tree::ToplevelNode}; +use crate::tree::ToplevelNode; pub trait TestToplevelNodeExt { fn center(&self) -> (i32, i32); diff --git a/src/it/tests/t0025_dnd_focus_change.rs b/src/it/tests/t0025_dnd_focus_change.rs index dbc87a69..14315027 100644 --- a/src/it/tests/t0025_dnd_focus_change.rs +++ b/src/it/tests/t0025_dnd_focus_change.rs @@ -1,7 +1,7 @@ use { crate::{ ifs::wl_seat::BTN_LEFT, - it::{test_error::TestResult, test_utils::test_rect_ext::TestRectExt, testrun::TestRun}, + it::{test_error::TestResult, testrun::TestRun}, tree::Node, }, std::rc::Rc, diff --git a/src/it/tests/t0027_input_region.rs b/src/it/tests/t0027_input_region.rs index 2411a40c..311dee12 100644 --- a/src/it/tests/t0027_input_region.rs +++ b/src/it/tests/t0027_input_region.rs @@ -1,6 +1,6 @@ use { crate::{ - it::{test_error::TestResult, test_utils::test_rect_ext::TestRectExt, testrun::TestRun}, + it::{test_error::TestResult, testrun::TestRun}, tree::Node, }, std::rc::Rc, diff --git a/src/rect.rs b/src/rect.rs index a8bd1230..14991e37 100644 --- a/src/rect.rs +++ b/src/rect.rs @@ -236,4 +236,11 @@ impl Rect { pub fn size(&self) -> (i32, i32) { (self.width(), self.height()) } + + pub fn center(&self) -> (i32, i32) { + ( + self.raw.x1 + self.width() / 2, + self.raw.y1 + self.height() / 2, + ) + } }