Draft input_method support
This commit is contained in:
parent
599d8b560b
commit
7db5256b72
13 changed files with 420 additions and 27 deletions
|
|
@ -33,8 +33,9 @@ use crate::core::widget::operation::{self, Operation};
|
|||
use crate::core::widget::tree::{self, Tree};
|
||||
use crate::core::window;
|
||||
use crate::core::{
|
||||
self, Background, Clipboard, Color, Element, Event, Layout, Length,
|
||||
Padding, Pixels, Point, Rectangle, Shell, Size, Theme, Vector, Widget,
|
||||
self, Background, CaretInfo, Clipboard, Color, Element, Event, Layout,
|
||||
Length, Padding, Pixels, Point, Rectangle, Shell, Size, Theme, Vector,
|
||||
Widget,
|
||||
};
|
||||
use crate::runtime::task::{self, Task};
|
||||
use crate::runtime::Action;
|
||||
|
|
@ -729,6 +730,7 @@ where
|
|||
let translation =
|
||||
state.translation(self.direction, bounds, content_bounds);
|
||||
|
||||
let children_may_have_caret = shell.caret_info().is_none();
|
||||
self.content.as_widget_mut().update(
|
||||
&mut tree.children[0],
|
||||
event.clone(),
|
||||
|
|
@ -743,6 +745,19 @@ where
|
|||
..bounds
|
||||
},
|
||||
);
|
||||
|
||||
if children_may_have_caret {
|
||||
if let Some(caret_info) = shell.caret_info() {
|
||||
shell.update_caret_info(Some(CaretInfo {
|
||||
position: Point::new(
|
||||
caret_info.position.x - translation.x,
|
||||
caret_info.position.y - translation.y,
|
||||
),
|
||||
input_method_allowed: caret_info
|
||||
.input_method_allowed,
|
||||
}));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if matches!(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue