From af696acc697eb74bdc26377891927e437f58190d Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Fri, 14 Oct 2016 17:51:59 +0200 Subject: [PATCH] Removed gtkMode from Next/PreviousWord. As we always want this behaviour. --- src/Avalonia.Controls/TextBox.cs | 8 +- src/Avalonia.Controls/Utils/StringUtils.cs | 118 +++++---------------- 2 files changed, 28 insertions(+), 98 deletions(-) diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index 60ac1b5e3b..cd3dd0d098 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -495,10 +495,10 @@ namespace Avalonia.Controls case 2: if (!StringUtils.IsStartOfWord(text, index)) { - SelectionStart = StringUtils.PreviousWord(text, index, true); + SelectionStart = StringUtils.PreviousWord(text, index); } - SelectionEnd = StringUtils.NextWord(text, index, true); + SelectionEnd = StringUtils.NextWord(text, index); break; case 3: SelectionStart = 0; @@ -638,11 +638,11 @@ namespace Avalonia.Controls { if (direction > 0) { - CaretIndex += StringUtils.NextWord(text, caretIndex, true) - caretIndex; + CaretIndex += StringUtils.NextWord(text, caretIndex) - caretIndex; } else { - CaretIndex += StringUtils.PreviousWord(text, caretIndex, true) - caretIndex; + CaretIndex += StringUtils.PreviousWord(text, caretIndex) - caretIndex; } } } diff --git a/src/Avalonia.Controls/Utils/StringUtils.cs b/src/Avalonia.Controls/Utils/StringUtils.cs index 8571d663f5..2304866a85 100644 --- a/src/Avalonia.Controls/Utils/StringUtils.cs +++ b/src/Avalonia.Controls/Utils/StringUtils.cs @@ -57,7 +57,7 @@ namespace Avalonia.Controls.Utils } } - public static int PreviousWord(string text, int cursor, bool gtkMode) + public static int PreviousWord(string text, int cursor) { int begin; int i; @@ -81,60 +81,21 @@ namespace Avalonia.Controls.Utils return (cr > 0) ? cr : 0; } - if (gtkMode) - { - CharClass cc = GetCharClass(text[cursor - 1]); - begin = lf + 1; - i = cursor; - - // skip over the word, punctuation, or run of whitespace - while (i > begin && GetCharClass(text[i - 1]) == cc) - { - i--; - } + CharClass cc = GetCharClass(text[cursor - 1]); + begin = lf + 1; + i = cursor; - // if the cursor was at whitespace, skip back a word too - if (cc == CharClass.CharClassWhitespace && i > begin) - { - cc = GetCharClass(text[i - 1]); - while (i > begin && GetCharClass(text[i - 1]) == cc) - { - i--; - } - } - } - else + // skip over the word, punctuation, or run of whitespace + while (i > begin && GetCharClass(text[i - 1]) == cc) { - begin = lf + 1; - i = cursor; - - if (cursor < text.Length) - { - // skip to the beginning of this word - while (i > begin && !char.IsWhiteSpace(text[i - 1])) - { - i--; - } - - if (i < cursor && IsStartOfWord(text, i)) - { - return i; - } - } - - // skip to the start of the lwsp - while (i > begin && char.IsWhiteSpace(text[i - 1])) - { - i--; - } - - if (i > begin) - { - i--; - } + i--; + } - // skip to the beginning of the word - while (i > begin && !IsStartOfWord(text, i)) + // if the cursor was at whitespace, skip back a word too + if (cc == CharClass.CharClassWhitespace && i > begin) + { + cc = GetCharClass(text[i - 1]); + while (i > begin && GetCharClass(text[i - 1]) == cc) { i--; } @@ -143,7 +104,7 @@ namespace Avalonia.Controls.Utils return i; } - public static int NextWord(string text, int cursor, bool gtkMode) + public static int NextWord(string text, int cursor) { int i, lf, cr; @@ -169,50 +130,19 @@ namespace Avalonia.Controls.Utils return cursor; } - if (gtkMode) - { - CharClass cc = GetCharClass(text[cursor]); - i = cursor; - - // skip over the word, punctuation, or run of whitespace - while (i < cr && GetCharClass(text[i]) == cc) - { - i++; - } + CharClass cc = GetCharClass(text[cursor]); + i = cursor; - // skip any whitespace after the word/punct - while (i < cr && char.IsWhiteSpace(text[i])) - { - i++; - } - } - else + // skip over the word, punctuation, or run of whitespace + while (i < cr && GetCharClass(text[i]) == cc) { - i = cursor; - - // skip any whitespace before the word - while (i < cr && char.IsWhiteSpace(text[i])) - { - i++; - } - - // skip to the end of the current word - while (i < cr && !char.IsWhiteSpace(text[i])) - { - i++; - } - - // skip any whitespace after the word - while (i < cr && char.IsWhiteSpace(text[i])) - { - i++; - } + i++; + } - // find the start of the next word - while (i < cr && !IsStartOfWord(text, i)) - { - i++; - } + // skip any whitespace after the word/punct + while (i < cr && char.IsWhiteSpace(text[i])) + { + i++; } return i;