添加记录和恢复光标在每个 monitor 中的位置功能

This commit is contained in:
2026-01-13 12:29:49 +08:00
parent 5e22aed718
commit ced78b004f
8 changed files with 61 additions and 0 deletions

View File

@@ -285,3 +285,21 @@ void monitor_arrange(monitor_t *monitor) {
}
xcb_flush(wm.xcb_conn);
}
void monitor_save_cursor_point(monitor_t *monitor) {
monitor->cursor_position = xcursor_query_pointer_position();
monitor->position_inited = true;
}
void monitor_restore_cursor_point(monitor_t *monitor) {
if (monitor->position_inited) {
xcursor_set_pointer_position(monitor->cursor_position);
return;
}
point_t point = xcursor_query_pointer_position();
monitor_t *m = wm_get_monitor_by_point(point);
monitor->cursor_position.x = point.x - m->geometry.x + monitor->geometry.x;
monitor->cursor_position.y = point.y - m->geometry.y + monitor->geometry.y;
monitor->position_inited = true;
}