Merge pull request #2790 from rhysd/adjust-preedit-size

Set correct text size for preedit window
This commit is contained in:
Héctor 2025-02-12 07:36:48 +01:00 committed by GitHub
commit 7c1123d6c9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 16 additions and 6 deletions

View file

@ -1,5 +1,5 @@
//! Listen to input method events.
use crate::Point;
use crate::{Pixels, Point};
use std::ops::Range;
@ -34,6 +34,8 @@ pub struct Preedit<T = String> {
pub content: T,
/// The selected range of the content.
pub selection: Option<Range<usize>>,
/// The text size of the content.
pub text_size: Option<Pixels>,
}
impl<T> Preedit<T> {
@ -53,6 +55,7 @@ impl<T> Preedit<T> {
Preedit {
content: self.content.as_ref().to_owned(),
selection: self.selection.clone(),
text_size: self.text_size,
}
}
}
@ -63,6 +66,7 @@ impl Preedit {
Preedit {
content: &self.content,
selection: self.selection.clone(),
text_size: self.text_size,
}
}
}
@ -90,13 +94,13 @@ impl InputMethod {
/// let open = InputMethod::Open {
/// position: Point::ORIGIN,
/// purpose: Purpose::Normal,
/// preedit: Some(Preedit { content: "1".to_owned(), selection: None }),
/// preedit: Some(Preedit { content: "1".to_owned(), selection: None, text_size: None }),
/// };
///
/// let open_2 = InputMethod::Open {
/// position: Point::ORIGIN,
/// purpose: Purpose::Secure,
/// preedit: Some(Preedit { content: "2".to_owned(), selection: None }),
/// preedit: Some(Preedit { content: "2".to_owned(), selection: None, text_size: None }),
/// };
///
/// let mut ime = InputMethod::Disabled;

View file

@ -759,8 +759,11 @@ where
shell.request_redraw();
}
Ime::Preedit { content, selection } => {
state.preedit =
Some(input_method::Preedit { content, selection });
state.preedit = Some(input_method::Preedit {
content,
selection,
text_size: self.text_size,
});
shell.request_redraw();
}

View file

@ -1273,6 +1273,7 @@ where
state.is_ime_open = Some(input_method::Preedit {
content: content.to_owned(),
selection: selection.clone(),
text_size: self.size,
});
shell.request_redraw();

View file

@ -322,7 +322,9 @@ where
self.content = Renderer::Paragraph::with_spans(Text {
content: &spans,
bounds: Size::INFINITY,
size: renderer.default_size(),
size: preedit
.text_size
.unwrap_or_else(|| renderer.default_size()),
line_height: text::LineHeight::default(),
font: renderer.default_font(),
horizontal_alignment: alignment::Horizontal::Left,