feat: support IME cursor area (#35623)

* feat: support IME cursor area

Signed-off-by: DK Liao <dklassic@gmail.com>

* use winit::dpi  for LogicalPosition instead

Signed-off-by: DK Liao <dklassic@gmail.com>

* perform ./mach fmt

Signed-off-by: DK Liao <dklassic@gmail.com>

---------

Signed-off-by: DK Liao <dklassic@gmail.com>
This commit is contained in:
DK Liao 2025-02-25 17:19:00 +09:00 committed by GitHub
parent f3a8bf8ca2
commit 3f6b21d8e1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -29,7 +29,7 @@ use servo::{
};
use surfman::{Context, Device};
use url::Url;
use winit::dpi::{LogicalSize, PhysicalPosition, PhysicalSize};
use winit::dpi::{LogicalPosition, LogicalSize, PhysicalPosition, PhysicalSize};
use winit::event::{
ElementState, Ime, KeyEvent, MouseButton, MouseScrollDelta, TouchPhase, WindowEvent,
};
@ -707,9 +707,19 @@ impl WindowPortsMethods for Window {
_input_type: servo::InputMethodType,
_text: Option<(String, i32)>,
_multiline: bool,
_position: servo::webrender_api::units::DeviceIntRect,
position: servo::webrender_api::units::DeviceIntRect,
) {
self.winit_window.set_ime_allowed(true);
self.winit_window.set_ime_cursor_area(
LogicalPosition::new(
position.min.x,
position.min.y + (self.toolbar_height.get().0 as i32),
),
LogicalSize::new(
position.max.x - position.min.x,
position.max.y - position.min.y,
),
);
}
fn hide_ime(&self) {