@@ -348,28 +348,32 @@ TextEditor::Coordinates TextEditor::ScreenPosToCoordinates(const ImVec2& aPositi
348
348
int delta = 0 ;
349
349
350
350
// 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 ())
352
352
{
353
353
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
+ }
373
377
++columnIndex;
374
378
}
375
379
0 commit comments