From 23d4a7406b5671f71c9a042251e66f74047e7447 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Mon, 4 Sep 2017 14:12:22 +0300 Subject: [PATCH] fix #416 - editor whitespace marks for lines containing whitespace only --- src/dlangui/platforms/sdl/sdlapp.d | 2 +- src/dlangui/widgets/editors.d | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/dlangui/platforms/sdl/sdlapp.d b/src/dlangui/platforms/sdl/sdlapp.d index 0c9f4e81..20909e2a 100644 --- a/src/dlangui/platforms/sdl/sdlapp.d +++ b/src/dlangui/platforms/sdl/sdlapp.d @@ -999,7 +999,7 @@ class SDLWindow : Window { if (flags & KeyFlag.Control || (flags & KeyFlag.LAlt) == KeyFlag.LAlt || flags & KeyFlag.Menu) return true; - + bool res = dispatchKeyEvent(new KeyEvent(KeyAction.Text, 0, flags, ds)); if (res) { debug(DebugSDL) Log.d("Calling update() after text event"); diff --git a/src/dlangui/widgets/editors.d b/src/dlangui/widgets/editors.d index 482b2b51..81cabd94 100644 --- a/src/dlangui/widgets/editors.d +++ b/src/dlangui/widgets/editors.d @@ -2875,7 +2875,8 @@ class EditBox : EditWidgetBase { lastNonSpace = i + 1; } } - if (firstNonSpace <= 0 && lastNonSpace >= txt.length && !hasTabs) + bool spacesOnly = txt.length > 0 && firstNonSpace < 0; + if (firstNonSpace <= 0 && lastNonSpace >= txt.length && !hasTabs && !spacesOnly) return; uint color = addAlpha(textColor, 0xC0); static int[] textSizeBuffer; @@ -2888,7 +2889,7 @@ class EditBox : EditWidgetBase { int spaceIndex = 0; for (int i = 0; i < txt.length && i < charsMeasured; i++) { dchar ch = txt[i]; - bool outsideText = (i < firstNonSpace || i >= lastNonSpace); + bool outsideText = (i < firstNonSpace || i >= lastNonSpace || spacesOnly); if ((ch == ' ' && outsideText) || ch == '\t') { Rect rc = lineRect; rc.left = lineRect.left + (i > 0 ? textSizeBuffer[i - 1] : 0);