fix wrapped textbox selection render
This commit is contained in:
parent
a1f0c2c252
commit
76b54a890c
@ -253,9 +253,10 @@ void TextBox::draw(const DrawContext& pctx, const Assets& assets) {
|
|||||||
float time = gui.getWindow().time();
|
float time = gui.getWindow().time();
|
||||||
|
|
||||||
if (editable && static_cast<int>((time - caretLastMove) * 2) % 2 == 0) {
|
if (editable && static_cast<int>((time - caretLastMove) * 2) % 2 == 0) {
|
||||||
uint line = rawTextCache.getLineByTextIndex(caret);
|
uint line = label->getLineByTextIndex(caret);
|
||||||
uint lcaret = caret - rawTextCache.getTextLineOffset(line);
|
uint lcaret = caret - label->getTextLineOffset(line);
|
||||||
int width = rawTextCache.metrics.calcWidth(input, 0, lcaret);
|
int width = rawTextCache.metrics.calcWidth(input, 0, lcaret);
|
||||||
|
|
||||||
batch->rect(
|
batch->rect(
|
||||||
lcoord.x + width,
|
lcoord.x + width,
|
||||||
lcoord.y + label->getLineYOffset(line),
|
lcoord.y + label->getLineYOffset(line),
|
||||||
@ -272,10 +273,10 @@ void TextBox::draw(const DrawContext& pctx, const Assets& assets) {
|
|||||||
|
|
||||||
batch->setColor(glm::vec4(0.8f, 0.9f, 1.0f, 0.25f));
|
batch->setColor(glm::vec4(0.8f, 0.9f, 1.0f, 0.25f));
|
||||||
int start = rawTextCache.metrics.calcWidth(
|
int start = rawTextCache.metrics.calcWidth(
|
||||||
labelText, selectionStart - label->getTextLineOffset(startLine)
|
labelText, 0, selectionStart - label->getTextLineOffset(startLine)
|
||||||
);
|
);
|
||||||
int end = rawTextCache.metrics.calcWidth(
|
int end = rawTextCache.metrics.calcWidth(
|
||||||
labelText, selectionEnd - label->getTextLineOffset(endLine)
|
labelText, 0, selectionEnd - label->getTextLineOffset(endLine)
|
||||||
);
|
);
|
||||||
int lineY = label->getLineYOffset(startLine);
|
int lineY = label->getLineYOffset(startLine);
|
||||||
|
|
||||||
@ -1210,8 +1211,8 @@ void TextBox::setCaret(size_t position) {
|
|||||||
scrolled(-glm::ceil(offset / static_cast<double>(scrollStep) + 0.5f));
|
scrolled(-glm::ceil(offset / static_cast<double>(scrollStep) + 0.5f));
|
||||||
}
|
}
|
||||||
int lcaret = caret - rawTextCache.getTextLineOffset(line);
|
int lcaret = caret - rawTextCache.getTextLineOffset(line);
|
||||||
int realoffset =
|
int realoffset = rawTextCache.metrics.calcWidth(labelText, 0, lcaret) -
|
||||||
rawTextCache.metrics.calcWidth(labelText, 0, lcaret) - static_cast<int>(textOffset) + 2;
|
static_cast<int>(textOffset) + 2;
|
||||||
|
|
||||||
if (realoffset - width > 0) {
|
if (realoffset - width > 0) {
|
||||||
setTextOffset(textOffset + realoffset - width);
|
setTextOffset(textOffset + realoffset - width);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user