{
VirtualConsole *vc = opaque;
GtkDisplayState *s = vc->s;
+ GdkWindow *window;
int x, y;
int mx, my;
int fbh, fbw;
- int ww, wh;
+ int ww, wh, ws;
if (!vc->gfx.ds) {
return TRUE;
fbw = surface_width(vc->gfx.ds) * vc->gfx.scale_x;
fbh = surface_height(vc->gfx.ds) * vc->gfx.scale_y;
- ww = gdk_window_get_width(gtk_widget_get_window(vc->gfx.drawing_area));
- wh = gdk_window_get_height(gtk_widget_get_window(vc->gfx.drawing_area));
+ window = gtk_widget_get_window(vc->gfx.drawing_area);
+ ww = gdk_window_get_width(window);
+ wh = gdk_window_get_height(window);
+ ws = gdk_window_get_scale_factor(window);
mx = my = 0;
if (ww > fbw) {
my = (wh - fbh) / 2;
}
- x = (motion->x - mx) / vc->gfx.scale_x;
- y = (motion->y - my) / vc->gfx.scale_y;
+ x = (motion->x - mx) / vc->gfx.scale_x * ws;
+ y = (motion->y - my) / vc->gfx.scale_y * ws;
if (qemu_input_is_absolute()) {
if (x < 0 || y < 0 ||