Open tronical opened 2 weeks ago
We probably need a public API in the software renderer as this would also be in used for the uefi example.
Just wondering at which level to do. The API could look like
impl SoftwareRenderer { // Or should it be in slint::Window?
pub fn set_draw_mouse_cursor(cursor: Option<slint::Image>);
Maybe fn set_cursor_image(&self, image: Option<slint::Image>)
. I think Wayland also supports specifying an image for use a cursor, so this could indeed be on the Window.
No, no. The API i have in mind would be that Slint draws the cursor with its own renderer.
So an implementation of a backend would look like
impl WindowAdapter for MyBackendWindow {
// ...
// this is currently in WindowAdapterInternal, but we should make it public at some point)
fn set_mouse_cursor(&self, cursor: MouseCursor) {
let cursor_image: Option<slint::Image> = load_png_for_cursor(cursor);
self.renderer.set_draw_mouse_cursor(cursor_image);
}
}
I think Wayland also supports specifying an image for use a cursor, so this could indeed be on the Window.
That is something else, and should be somehow in the MouseCursor enum, we could pass an image to TouchArea::mouse-cursor
or an extra property.
As a follow-up to #4334 , this issue exists to remind about the missing support for rendering the mouse cursor when using
renderer-software
withbackend-linuxkms
.The approach discussed in #4334 to implement this cleanly is briefly outlined in https://github.com/slint-ui/slint/pull/4334#discussion_r1451556820 : Add support for this type of mouse cursor rendering in the core library by synthesizing an
Image
that's rendered on top of the scene.