Skip to content

Commit 0708c7a

Browse files
committed
Mouse click: can place cursor just after last column
1 parent ed8d111 commit 0708c7a

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

TextEditor.cpp

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -348,28 +348,32 @@ TextEditor::Coordinates TextEditor::ScreenPosToCoordinates(const ImVec2& aPositi
348348
int delta = 0;
349349

350350
// First we find the hovered column coord.
351-
while (mTextStart + columnX - (aInsertionMode ? 0.5f : 0.0f) * columnWidth < local.x && (size_t)columnIndex < line.size())
351+
while (mTextStart + columnX - (aInsertionMode ? 0.5f : 0.0f) * columnWidth < local.x && (size_t)columnIndex <= line.size())
352352
{
353353
columnCoord += delta;
354-
if (line[columnIndex].mChar == '\t')
355-
{
356-
float oldX = columnX;
357-
columnX = (1.0f + std::floor((1.0f + columnX) / (float(mTabSize) * spaceSize))) * (float(mTabSize) * spaceSize);
358-
columnWidth = columnX - oldX;
359-
delta = columnCoord - (columnCoord / mTabSize) * mTabSize + mTabSize;
360-
}
361-
else
362-
{
363-
char buf[7];
364-
auto d = UTF8CharLength(line[columnIndex].mChar);
365-
int i = 0;
366-
while (i < 6 && d-- > 0)
367-
buf[i++] = line[columnIndex].mChar;
368-
buf[i] = '\0';
369-
columnWidth = ImGui::GetFont()->CalcTextSizeA(ImGui::GetFontSize(), FLT_MAX, -1.0f, buf).x;
370-
columnX += columnWidth;
371-
delta = 1;
372-
}
354+
bool isPastLastLineCharacter = columnIndex >= line.size();
355+
if (!isPastLastLineCharacter)
356+
{
357+
if (line[columnIndex].mChar == '\t')
358+
{
359+
float oldX = columnX;
360+
columnX = (1.0f + std::floor((1.0f + columnX) / (float(mTabSize) * spaceSize))) * (float(mTabSize) * spaceSize);
361+
columnWidth = columnX - oldX;
362+
delta = columnCoord - (columnCoord / mTabSize) * mTabSize + mTabSize;
363+
}
364+
else
365+
{
366+
char buf[7];
367+
auto d = UTF8CharLength(line[columnIndex].mChar);
368+
int i = 0;
369+
while (i < 6 && d-- > 0)
370+
buf[i++] = line[columnIndex].mChar;
371+
buf[i] = '\0';
372+
columnWidth = ImGui::GetFont()->CalcTextSizeA(ImGui::GetFontSize(), FLT_MAX, -1.0f, buf).x;
373+
columnX += columnWidth;
374+
delta = 1;
375+
}
376+
}
373377
++columnIndex;
374378
}
375379

0 commit comments

Comments
 (0)