Browse Source

Wayland: scale relative pointer motion

Oops, forgot to do that. Motion-dependent stuff should now work properly
when using scaled displays.
Riteo 1 year ago
parent
commit
3e0632cbd2
1 changed files with 5 additions and 0 deletions
  1. 5 0
      platform/linuxbsd/wayland/wayland_thread.cpp

+ 5 - 0
platform/linuxbsd/wayland/wayland_thread.cpp

@@ -2049,9 +2049,14 @@ void WaylandThread::_wp_relative_pointer_on_relative_motion(void *data, struct z
 
 
 	PointerData &pd = ss->pointer_data_buffer;
 	PointerData &pd = ss->pointer_data_buffer;
 
 
+	WindowState *ws = wl_surface_get_window_state(ss->pointed_surface);
+	ERR_FAIL_NULL(ws);
+
 	pd.relative_motion.x = wl_fixed_to_double(dx);
 	pd.relative_motion.x = wl_fixed_to_double(dx);
 	pd.relative_motion.y = wl_fixed_to_double(dy);
 	pd.relative_motion.y = wl_fixed_to_double(dy);
 
 
+	pd.relative_motion *= window_state_get_scale_factor(ws);
+
 	pd.relative_motion_time = uptime_lo;
 	pd.relative_motion_time = uptime_lo;
 }
 }