Fix out of bounds caret in TextEditor in some circumstances
This commit is contained in:
parent
3762c0590c
commit
73088a6fc1
1 changed files with 17 additions and 13 deletions
|
|
@ -569,23 +569,27 @@ where
|
||||||
if state.is_focused {
|
if state.is_focused {
|
||||||
match internal.editor.cursor() {
|
match internal.editor.cursor() {
|
||||||
Cursor::Caret(position) => {
|
Cursor::Caret(position) => {
|
||||||
let position = position + translation;
|
let cursor =
|
||||||
|
Rectangle::new(
|
||||||
|
position + translation,
|
||||||
|
Size::new(
|
||||||
|
1.0,
|
||||||
|
self.line_height
|
||||||
|
.to_absolute(self.text_size.unwrap_or_else(
|
||||||
|
|| renderer.default_size(),
|
||||||
|
))
|
||||||
|
.into(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
if bounds.contains(position) {
|
if let Some(clipped_cursor) = bounds.intersection(&cursor) {
|
||||||
renderer.fill_quad(
|
renderer.fill_quad(
|
||||||
renderer::Quad {
|
renderer::Quad {
|
||||||
bounds: Rectangle {
|
bounds: Rectangle {
|
||||||
x: position.x.floor(),
|
x: clipped_cursor.x.floor(),
|
||||||
y: position.y,
|
y: clipped_cursor.y,
|
||||||
width: 1.0,
|
width: clipped_cursor.width,
|
||||||
height: self
|
height: clipped_cursor.height,
|
||||||
.line_height
|
|
||||||
.to_absolute(
|
|
||||||
self.text_size.unwrap_or_else(
|
|
||||||
|| renderer.default_size(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.into(),
|
|
||||||
},
|
},
|
||||||
..renderer::Quad::default()
|
..renderer::Quad::default()
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue