Fix to limit X position of text agent to client width (#870)
This commit is contained in:
parent
83e490fb6a
commit
10c8ffa543
1 changed files with 5 additions and 5 deletions
|
@ -1217,13 +1217,13 @@ fn move_text_cursor(cursor: &Option<egui::Pos2>, canvas_id: &str) -> Option<()>
|
||||||
if is_mobile() == Some(false) {
|
if is_mobile() == Some(false) {
|
||||||
cursor.as_ref().and_then(|&egui::Pos2 { x, y }| {
|
cursor.as_ref().and_then(|&egui::Pos2 { x, y }| {
|
||||||
let canvas = canvas_element(canvas_id)?;
|
let canvas = canvas_element(canvas_id)?;
|
||||||
let y = (y + (canvas.scroll_top() + canvas.offset_top()) as f32).min(
|
let bounding_rect = text_agent().get_bounding_client_rect();
|
||||||
canvas.client_height() as f32
|
let y = (y + (canvas.scroll_top() + canvas.offset_top()) as f32)
|
||||||
- text_agent().get_bounding_client_rect().height() as f32,
|
.min(canvas.client_height() as f32 - bounding_rect.height() as f32);
|
||||||
);
|
|
||||||
let x = x + (canvas.scroll_left() + canvas.offset_left()) as f32;
|
let x = x + (canvas.scroll_left() + canvas.offset_left()) as f32;
|
||||||
// Canvas is translated 50% horizontally in html.
|
// Canvas is translated 50% horizontally in html.
|
||||||
let x = x - canvas.offset_width() as f32 / 2.0;
|
let x = (x - canvas.offset_width() as f32 / 2.0)
|
||||||
|
.min(canvas.client_width() as f32 - bounding_rect.width() as f32);
|
||||||
style.set_property("position", "absolute").ok()?;
|
style.set_property("position", "absolute").ok()?;
|
||||||
style.set_property("top", &(y.to_string() + "px")).ok()?;
|
style.set_property("top", &(y.to_string() + "px")).ok()?;
|
||||||
style.set_property("left", &(x.to_string() + "px")).ok()
|
style.set_property("left", &(x.to_string() + "px")).ok()
|
||||||
|
|
Loading…
Reference in a new issue