Merge pull request #2790 from rhysd/adjust-preedit-size
Set correct text size for preedit window
This commit is contained in:
commit
7c1123d6c9
4 changed files with 16 additions and 6 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
//! Listen to input method events.
|
//! Listen to input method events.
|
||||||
use crate::Point;
|
use crate::{Pixels, Point};
|
||||||
|
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
|
|
||||||
|
|
@ -34,6 +34,8 @@ pub struct Preedit<T = String> {
|
||||||
pub content: T,
|
pub content: T,
|
||||||
/// The selected range of the content.
|
/// The selected range of the content.
|
||||||
pub selection: Option<Range<usize>>,
|
pub selection: Option<Range<usize>>,
|
||||||
|
/// The text size of the content.
|
||||||
|
pub text_size: Option<Pixels>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> Preedit<T> {
|
impl<T> Preedit<T> {
|
||||||
|
|
@ -53,6 +55,7 @@ impl<T> Preedit<T> {
|
||||||
Preedit {
|
Preedit {
|
||||||
content: self.content.as_ref().to_owned(),
|
content: self.content.as_ref().to_owned(),
|
||||||
selection: self.selection.clone(),
|
selection: self.selection.clone(),
|
||||||
|
text_size: self.text_size,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -63,6 +66,7 @@ impl Preedit {
|
||||||
Preedit {
|
Preedit {
|
||||||
content: &self.content,
|
content: &self.content,
|
||||||
selection: self.selection.clone(),
|
selection: self.selection.clone(),
|
||||||
|
text_size: self.text_size,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -90,13 +94,13 @@ impl InputMethod {
|
||||||
/// let open = InputMethod::Open {
|
/// let open = InputMethod::Open {
|
||||||
/// position: Point::ORIGIN,
|
/// position: Point::ORIGIN,
|
||||||
/// purpose: Purpose::Normal,
|
/// 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 {
|
/// let open_2 = InputMethod::Open {
|
||||||
/// position: Point::ORIGIN,
|
/// position: Point::ORIGIN,
|
||||||
/// purpose: Purpose::Secure,
|
/// 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;
|
/// let mut ime = InputMethod::Disabled;
|
||||||
|
|
|
||||||
|
|
@ -759,8 +759,11 @@ where
|
||||||
shell.request_redraw();
|
shell.request_redraw();
|
||||||
}
|
}
|
||||||
Ime::Preedit { content, selection } => {
|
Ime::Preedit { content, selection } => {
|
||||||
state.preedit =
|
state.preedit = Some(input_method::Preedit {
|
||||||
Some(input_method::Preedit { content, selection });
|
content,
|
||||||
|
selection,
|
||||||
|
text_size: self.text_size,
|
||||||
|
});
|
||||||
|
|
||||||
shell.request_redraw();
|
shell.request_redraw();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1273,6 +1273,7 @@ where
|
||||||
state.is_ime_open = Some(input_method::Preedit {
|
state.is_ime_open = Some(input_method::Preedit {
|
||||||
content: content.to_owned(),
|
content: content.to_owned(),
|
||||||
selection: selection.clone(),
|
selection: selection.clone(),
|
||||||
|
text_size: self.size,
|
||||||
});
|
});
|
||||||
|
|
||||||
shell.request_redraw();
|
shell.request_redraw();
|
||||||
|
|
|
||||||
|
|
@ -322,7 +322,9 @@ where
|
||||||
self.content = Renderer::Paragraph::with_spans(Text {
|
self.content = Renderer::Paragraph::with_spans(Text {
|
||||||
content: &spans,
|
content: &spans,
|
||||||
bounds: Size::INFINITY,
|
bounds: Size::INFINITY,
|
||||||
size: renderer.default_size(),
|
size: preedit
|
||||||
|
.text_size
|
||||||
|
.unwrap_or_else(|| renderer.default_size()),
|
||||||
line_height: text::LineHeight::default(),
|
line_height: text::LineHeight::default(),
|
||||||
font: renderer.default_font(),
|
font: renderer.default_font(),
|
||||||
horizontal_alignment: alignment::Horizontal::Left,
|
horizontal_alignment: alignment::Horizontal::Left,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue