shell: Correctly handle window geometry
This commit is contained in:
parent
1eb5d1e64f
commit
f59bb8a06e
3 changed files with 9 additions and 6 deletions
|
|
@ -221,7 +221,7 @@ where
|
||||||
) -> Vec<C> {
|
) -> Vec<C> {
|
||||||
AsRenderElements::<R>::render_elements::<CosmicWindowRenderElement<R>>(
|
AsRenderElements::<R>::render_elements::<CosmicWindowRenderElement<R>>(
|
||||||
&self.window,
|
&self.window,
|
||||||
location - self.window.geometry().loc.to_physical_precise_round(scale),
|
location,
|
||||||
scale,
|
scale,
|
||||||
)
|
)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ use crate::{
|
||||||
use id_tree::{InsertBehavior, MoveBehavior, Node, NodeId, NodeIdError, RemoveBehavior, Tree};
|
use id_tree::{InsertBehavior, MoveBehavior, Node, NodeId, NodeIdError, RemoveBehavior, Tree};
|
||||||
use smithay::{
|
use smithay::{
|
||||||
backend::renderer::{element::AsRenderElements, ImportAll, Renderer},
|
backend::renderer::{element::AsRenderElements, ImportAll, Renderer},
|
||||||
desktop::{layer_map_for_output, Window},
|
desktop::{layer_map_for_output, space::SpaceElement, Window},
|
||||||
input::{
|
input::{
|
||||||
pointer::{Focus, GrabStartData as PointerGrabStartData},
|
pointer::{Focus, GrabStartData as PointerGrabStartData},
|
||||||
Seat,
|
Seat,
|
||||||
|
|
@ -899,7 +899,6 @@ impl TilingLayout {
|
||||||
<R as Renderer>::TextureId: 'static,
|
<R as Renderer>::TextureId: 'static,
|
||||||
{
|
{
|
||||||
let output_scale = output.current_scale().fractional_scale();
|
let output_scale = output.current_scale().fractional_scale();
|
||||||
let int_scale = output.current_scale().integer_scale();
|
|
||||||
|
|
||||||
if !self.trees.contains_key(output) {
|
if !self.trees.contains_key(output) {
|
||||||
return Err(OutputNotMapped);
|
return Err(OutputNotMapped);
|
||||||
|
|
@ -916,7 +915,11 @@ impl TilingLayout {
|
||||||
})
|
})
|
||||||
.flat_map(|(mapped, loc)| {
|
.flat_map(|(mapped, loc)| {
|
||||||
mapped.render_elements::<TilingRenderElement<R>>(
|
mapped.render_elements::<TilingRenderElement<R>>(
|
||||||
loc.to_physical(int_scale),
|
loc.to_physical_precise_round(output_scale)
|
||||||
|
- mapped
|
||||||
|
.geometry()
|
||||||
|
.loc
|
||||||
|
.to_physical_precise_round(output_scale),
|
||||||
Scale::from(output_scale),
|
Scale::from(output_scale),
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -128,10 +128,10 @@ impl Workspace {
|
||||||
.element_under(location)
|
.element_under(location)
|
||||||
.or_else(|| {
|
.or_else(|| {
|
||||||
self.tiling_layer.mapped().find_map(|(_, mapped, loc)| {
|
self.tiling_layer.mapped().find_map(|(_, mapped, loc)| {
|
||||||
let test_point = location - loc.to_f64();
|
let test_point = location - loc.to_f64() + mapped.geometry().loc.to_f64();
|
||||||
mapped
|
mapped
|
||||||
.is_in_input_region(&test_point)
|
.is_in_input_region(&test_point)
|
||||||
.then_some((mapped, loc))
|
.then_some((mapped, loc - mapped.geometry().loc))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue