gtk: set cursor

This commit is contained in:
Marc-André Lureau
2021-02-21 20:01:33 +04:00
parent 35758dacb0
commit c07a48ad2c
3 changed files with 10 additions and 12 deletions
+7 -1
View File
@@ -2,7 +2,7 @@ use glib::clone;
use glib::subclass::prelude::*;
use gtk::prelude::*;
use gtk::subclass::widget::WidgetImplExt;
use gtk::{glib, CompositeTemplate};
use gtk::{gdk, glib, CompositeTemplate};
use once_cell::sync::OnceCell;
use std::cell::Cell;
@@ -171,6 +171,12 @@ impl QemuConsole {
Event::Disconnected => {
priv_.label.set_label("Console disconnected!");
}
Event::CursorDefine { width, height, hot_x, hot_y, data }=> {
let bytes = glib::Bytes::from(&data);
let tex = gdk::MemoryTexture::new(width, height, gdk::MemoryFormat::B8g8r8a8, &bytes, width as usize * 4);
let cur = gdk::Cursor::from_texture(&tex, hot_x, hot_y, None);
priv_.area.set_cursor(Some(&cur));
}
_ => ()
}
Continue(true)