From 470683aac9f3b1cb1fedd7c9095f95394d4697ba Mon Sep 17 00:00:00 2001 From: Barugon Date: Wed, 29 Jun 2022 22:08:28 -0700 Subject: [PATCH 1/3] Don't call scroll if TextEdit is fully in view --- egui/src/widgets/text_edit/builder.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/egui/src/widgets/text_edit/builder.rs b/egui/src/widgets/text_edit/builder.rs index f36b8e665e2..78251187808 100644 --- a/egui/src/widgets/text_edit/builder.rs +++ b/egui/src/widgets/text_edit/builder.rs @@ -590,7 +590,9 @@ impl<'t> TextEdit<'t> { &cursor_range.primary, ); - if response.changed || selection_changed { + if (response.changed || selection_changed) + && !ui.clip_rect().contains_rect(rect) + { ui.scroll_to_rect(cursor_pos, None); // keep cursor in view } From 2880fc20f72a144c2357b296e672230e3354b886 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sun, 3 Jul 2022 14:40:49 +0200 Subject: [PATCH 2/3] Explain why the new logic was added --- egui/src/widgets/text_edit/builder.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/egui/src/widgets/text_edit/builder.rs b/egui/src/widgets/text_edit/builder.rs index 78251187808..73f3d67fe65 100644 --- a/egui/src/widgets/text_edit/builder.rs +++ b/egui/src/widgets/text_edit/builder.rs @@ -590,8 +590,8 @@ impl<'t> TextEdit<'t> { &cursor_range.primary, ); - if (response.changed || selection_changed) - && !ui.clip_rect().contains_rect(rect) + let is_fully_visible = ui.clip_rect().contains_rect(rect); // TODO: remove this HACK workaround for https://github.com/emilk/egui/issues/1531 + if (response.changed || selection_changed) && !is_fully_visible { ui.scroll_to_rect(cursor_pos, None); // keep cursor in view } From d5ac563fc1fc127b5998a2d1bf0388aab4d59a61 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sun, 3 Jul 2022 15:15:44 +0200 Subject: [PATCH 3/3] cargo fmt --- egui/src/widgets/text_edit/builder.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/egui/src/widgets/text_edit/builder.rs b/egui/src/widgets/text_edit/builder.rs index 73f3d67fe65..eb72f37c35f 100644 --- a/egui/src/widgets/text_edit/builder.rs +++ b/egui/src/widgets/text_edit/builder.rs @@ -591,8 +591,7 @@ impl<'t> TextEdit<'t> { ); let is_fully_visible = ui.clip_rect().contains_rect(rect); // TODO: remove this HACK workaround for https://github.com/emilk/egui/issues/1531 - if (response.changed || selection_changed) && !is_fully_visible - { + if (response.changed || selection_changed) && !is_fully_visible { ui.scroll_to_rect(cursor_pos, None); // keep cursor in view }