Draft input_method support
This commit is contained in:
parent
599d8b560b
commit
7db5256b72
13 changed files with 420 additions and 27 deletions
|
|
@ -1,6 +1,15 @@
|
|||
use crate::event;
|
||||
use crate::time::Instant;
|
||||
use crate::window;
|
||||
use crate::{event, Point};
|
||||
|
||||
/// TODO
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub struct CaretInfo {
|
||||
/// TODO
|
||||
pub position: Point,
|
||||
/// TODO
|
||||
pub input_method_allowed: bool,
|
||||
}
|
||||
|
||||
/// A connection to the state of a shell.
|
||||
///
|
||||
|
|
@ -15,6 +24,7 @@ pub struct Shell<'a, Message> {
|
|||
redraw_request: Option<window::RedrawRequest>,
|
||||
is_layout_invalid: bool,
|
||||
are_widgets_invalid: bool,
|
||||
caret_info: Option<CaretInfo>,
|
||||
}
|
||||
|
||||
impl<'a, Message> Shell<'a, Message> {
|
||||
|
|
@ -26,6 +36,7 @@ impl<'a, Message> Shell<'a, Message> {
|
|||
redraw_request: None,
|
||||
is_layout_invalid: false,
|
||||
are_widgets_invalid: false,
|
||||
caret_info: None,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -80,6 +91,16 @@ impl<'a, Message> Shell<'a, Message> {
|
|||
self.redraw_request
|
||||
}
|
||||
|
||||
/// TODO
|
||||
pub fn update_caret_info(&mut self, caret_info: Option<CaretInfo>) {
|
||||
self.caret_info = caret_info.or(self.caret_info);
|
||||
}
|
||||
|
||||
/// TODO
|
||||
pub fn caret_info(&self) -> Option<CaretInfo> {
|
||||
self.caret_info
|
||||
}
|
||||
|
||||
/// Returns whether the current layout is invalid or not.
|
||||
pub fn is_layout_invalid(&self) -> bool {
|
||||
self.is_layout_invalid
|
||||
|
|
@ -130,6 +151,8 @@ impl<'a, Message> Shell<'a, Message> {
|
|||
);
|
||||
}
|
||||
|
||||
self.update_caret_info(other.caret_info());
|
||||
|
||||
self.is_layout_invalid =
|
||||
self.is_layout_invalid || other.is_layout_invalid;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue