From 94c180179c49ed678536915d7af46f54eb5988bb Mon Sep 17 00:00:00 2001 From: Cristian Dinu Date: Tue, 23 Mar 2021 08:35:05 +0200 Subject: [PATCH] When TAB is detected add 4 Space chars --- egui/src/widgets/text_edit.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/egui/src/widgets/text_edit.rs b/egui/src/widgets/text_edit.rs index 64d0fba52..4f949b050 100644 --- a/egui/src/widgets/text_edit.rs +++ b/egui/src/widgets/text_edit.rs @@ -299,6 +299,9 @@ impl<'t> TextEdit<'t> { desired_height_rows, } = self; + // Tabs are represented as 4 spaces for now + *text = text.replace("\t", " "); + let text_style = text_style.unwrap_or_else(|| ui.style().body_text_style); let font = &ui.fonts()[text_style]; let line_spacing = font.row_height(); @@ -436,6 +439,7 @@ impl<'t> TextEdit<'t> { && text_to_insert != "\r" { let mut ccursor = delete_selected(text, &cursorp); + insert_text(&mut ccursor, text, text_to_insert); Some(CCursorPair::one(ccursor)) } else { @@ -450,7 +454,10 @@ impl<'t> TextEdit<'t> { if multiline { let mut ccursor = delete_selected(text, &cursorp); insert_text(&mut ccursor, text, "\t"); - Some(CCursorPair::one(ccursor)) + + // Because we add a tab and the tab is represented + // as 4 spaces we must advance the cursor + Some(CCursorPair::one(ccursor + 3)) } else { None }