Browse Source
Fix to limit X position of text agent to client width (#870)
pull/885/head
sumibi-yakitori
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
5 additions and
5 deletions
-
egui_web/src/lib.rs
|
|
@ -1217,13 +1217,13 @@ fn move_text_cursor(cursor: &Option<egui::Pos2>, canvas_id: &str) -> Option<()> |
|
|
|
if is_mobile() == Some(false) { |
|
|
|
cursor.as_ref().and_then(|&egui::Pos2 { x, y }| { |
|
|
|
let canvas = canvas_element(canvas_id)?; |
|
|
|
let y = (y + (canvas.scroll_top() + canvas.offset_top()) as f32).min( |
|
|
|
canvas.client_height() as f32 |
|
|
|
- text_agent().get_bounding_client_rect().height() as f32, |
|
|
|
); |
|
|
|
let bounding_rect = text_agent().get_bounding_client_rect(); |
|
|
|
let y = (y + (canvas.scroll_top() + canvas.offset_top()) as f32) |
|
|
|
.min(canvas.client_height() as f32 - bounding_rect.height() as f32); |
|
|
|
let x = x + (canvas.scroll_left() + canvas.offset_left()) as f32; |
|
|
|
// 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("top", &(y.to_string() + "px")).ok()?; |
|
|
|
style.set_property("left", &(x.to_string() + "px")).ok() |
|
|
|