render: fix top-left clipping of surfaces
This commit is contained in:
parent
ccacdda03e
commit
250026f7f6
18 changed files with 147 additions and 277 deletions
|
|
@ -76,36 +76,16 @@ impl Cursor for CursorSurface {
|
|||
let (hot_x, hot_y) = (Fixed::from_int(hot_x), Fixed::from_int(hot_y));
|
||||
let x = ((x - hot_x).to_f64() * scale).round() as _;
|
||||
let y = ((y - hot_y).to_f64() * scale).round() as _;
|
||||
renderer.render_surface_scaled(
|
||||
&self.surface,
|
||||
x,
|
||||
y,
|
||||
None,
|
||||
i32::MAX,
|
||||
i32::MAX,
|
||||
false,
|
||||
);
|
||||
renderer.render_surface_scaled(&self.surface, x, y, None, None, false);
|
||||
} else {
|
||||
renderer.render_surface(
|
||||
&self.surface,
|
||||
x_int - hot_x,
|
||||
y_int - hot_y,
|
||||
i32::MAX,
|
||||
i32::MAX,
|
||||
);
|
||||
renderer.render_surface(&self.surface, x_int - hot_x, y_int - hot_y, None);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn render_hardware_cursor(&self, renderer: &mut Renderer) {
|
||||
let extents = self.surface.extents.get();
|
||||
renderer.render_surface(
|
||||
&self.surface,
|
||||
-extents.x1(),
|
||||
-extents.y1(),
|
||||
i32::MAX,
|
||||
i32::MAX,
|
||||
);
|
||||
renderer.render_surface(&self.surface, -extents.x1(), -extents.y1(), None);
|
||||
|
||||
struct FrameRequests;
|
||||
impl NodeVisitorBase for FrameRequests {
|
||||
|
|
|
|||
|
|
@ -332,15 +332,8 @@ impl Node for Xwindow {
|
|||
FindTreeResult::Other
|
||||
}
|
||||
|
||||
fn node_render(
|
||||
&self,
|
||||
renderer: &mut Renderer,
|
||||
x: i32,
|
||||
y: i32,
|
||||
max_width: i32,
|
||||
max_height: i32,
|
||||
) {
|
||||
renderer.render_surface(&self.x.surface, x, y, max_width, max_height)
|
||||
fn node_render(&self, renderer: &mut Renderer, x: i32, y: i32, bounds: Option<&Rect>) {
|
||||
renderer.render_surface(&self.x.surface, x, y, bounds)
|
||||
}
|
||||
|
||||
fn node_client(&self) -> Option<Rc<Client>> {
|
||||
|
|
|
|||
|
|
@ -300,15 +300,8 @@ impl Node for XdgPopup {
|
|||
self.xdg.find_tree_at(x, y, tree)
|
||||
}
|
||||
|
||||
fn node_render(
|
||||
&self,
|
||||
renderer: &mut Renderer,
|
||||
x: i32,
|
||||
y: i32,
|
||||
max_width: i32,
|
||||
max_height: i32,
|
||||
) {
|
||||
renderer.render_xdg_surface(&self.xdg, x, y, max_width, max_height)
|
||||
fn node_render(&self, renderer: &mut Renderer, x: i32, y: i32, bounds: Option<&Rect>) {
|
||||
renderer.render_xdg_surface(&self.xdg, x, y, bounds)
|
||||
}
|
||||
|
||||
fn node_client(&self) -> Option<Rc<Client>> {
|
||||
|
|
|
|||
|
|
@ -422,15 +422,8 @@ impl Node for XdgToplevel {
|
|||
self.xdg.find_tree_at(x, y, tree)
|
||||
}
|
||||
|
||||
fn node_render(
|
||||
&self,
|
||||
renderer: &mut Renderer,
|
||||
x: i32,
|
||||
y: i32,
|
||||
max_width: i32,
|
||||
max_height: i32,
|
||||
) {
|
||||
renderer.render_xdg_surface(&self.xdg, x, y, max_width, max_height)
|
||||
fn node_render(&self, renderer: &mut Renderer, x: i32, y: i32, bounds: Option<&Rect>) {
|
||||
renderer.render_xdg_surface(&self.xdg, x, y, bounds)
|
||||
}
|
||||
|
||||
fn node_client(&self) -> Option<Rc<Client>> {
|
||||
|
|
|
|||
|
|
@ -394,14 +394,7 @@ impl Node for ZwlrLayerSurfaceV1 {
|
|||
self.surface.find_tree_at_(x, y, tree)
|
||||
}
|
||||
|
||||
fn node_render(
|
||||
&self,
|
||||
renderer: &mut Renderer,
|
||||
x: i32,
|
||||
y: i32,
|
||||
_max_width: i32,
|
||||
_max_height: i32,
|
||||
) {
|
||||
fn node_render(&self, renderer: &mut Renderer, x: i32, y: i32, _bounds: Option<&Rect>) {
|
||||
renderer.render_layer_surface(self, x, y);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue