mirror of
https://github.com/beefytech/Beef.git
synced 2025-07-04 23:36:00 +02:00
Improved right-cursor movement over utf8 codepoints
This commit is contained in:
parent
04f1802303
commit
f96de4722e
3 changed files with 41 additions and 4 deletions
|
@ -2226,15 +2226,18 @@ namespace Beefy.widgets
|
|||
else if (lineIdx < GetLineCount() - 1)
|
||||
MoveCursorTo(lineIdx + 1, 0, false, 0, .SelectRight);
|
||||
|
||||
if (!mWidgetWindow.IsKeyDown(KeyCode.Control))
|
||||
break;
|
||||
|
||||
GetLineCharAtIdx(CursorTextPos, out lineIdx, out lineChar);
|
||||
anIndex = GetTextIdx(lineIdx, lineChar);
|
||||
if (anIndex == mData.mTextLength)
|
||||
break;
|
||||
|
||||
char8 c = (char8)mData.mText[anIndex].mChar;
|
||||
if ((uint8)c & 0xC0 == 0x80)
|
||||
continue;
|
||||
|
||||
if (!mWidgetWindow.IsKeyDown(KeyCode.Control))
|
||||
break;
|
||||
|
||||
CharType char8Type = GetCharType(c);
|
||||
if (char8Type == .Opening)
|
||||
break;
|
||||
|
|
|
@ -359,6 +359,23 @@ namespace System
|
|||
}
|
||||
}
|
||||
|
||||
public int NumCodePoints
|
||||
{
|
||||
get
|
||||
{
|
||||
char8* ptr = Ptr;
|
||||
|
||||
int count = 0;
|
||||
for (int i < mLength)
|
||||
{
|
||||
char8 c = ptr[i];
|
||||
if (((uint8)c & 0xC0) != 0x80)
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
||||
public int AllocSize
|
||||
{
|
||||
[Inline]
|
||||
|
@ -3594,6 +3611,23 @@ namespace System
|
|||
}
|
||||
}
|
||||
|
||||
public int NumCodePoints
|
||||
{
|
||||
get
|
||||
{
|
||||
char8* ptr = Ptr;
|
||||
|
||||
int count = 0;
|
||||
for (int i < mLength)
|
||||
{
|
||||
char8 c = ptr[i];
|
||||
if (((uint8)c & 0xC0) != 0x80)
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
||||
private int GetRangeStart(IndexRange range)
|
||||
{
|
||||
switch (range.Start)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue