Correct IME position calculation with window padding

This commit is contained in:
Bryan Lee
2025-01-12 01:15:53 +08:00
parent 918ccdba5c
commit 2409d46600

View File

@ -1316,8 +1316,8 @@ pub fn imePoint(self: *const Surface) apprt.IMEPos {
const content_scale = self.rt_surface.getContentScale() catch .{ .x = 1, .y = 1 };
const x: f64 = x: {
// Simple x * cell width gives the top-left corner
var x: f64 = @floatFromInt(cursor.x * self.size.cell.width);
// Simple x * cell width gives the top-left corner, then add padding offset
var x: f64 = @floatFromInt(cursor.x * self.size.cell.width + self.size.padding.left);
// We want the midpoint
x += @as(f64, @floatFromInt(self.size.cell.width)) / 2;
@ -1329,8 +1329,8 @@ pub fn imePoint(self: *const Surface) apprt.IMEPos {
};
const y: f64 = y: {
// Simple x * cell width gives the top-left corner
var y: f64 = @floatFromInt(cursor.y * self.size.cell.height);
// Simple y * cell height gives the top-left corner, then add padding offset
var y: f64 = @floatFromInt(cursor.y * self.size.cell.height + self.size.padding.top);
// We want the bottom
y += @floatFromInt(self.size.cell.height);