🪲 The caret of a TextBox should not move when adding a newline at the start of a line that only exists due to word-wrap
parent
495626ca38
commit
c101b49cd5
|
@ -890,8 +890,12 @@ namespace tgui
|
|||
m_text.insert(caretPosition, key);
|
||||
m_lines[m_selEnd.y].insert(m_selEnd.x, key);
|
||||
|
||||
// Increment the caret position, unless you type a newline at the start of a line while that line only existed due to word wrapping
|
||||
if ((key != '\n') || (m_selEnd.x > 0) || (m_selEnd.y == 0) || m_lines[m_selEnd.y-1].isEmpty() || (m_text[caretPosition-1] == '\n'))
|
||||
{
|
||||
m_selStart.x++;
|
||||
m_selEnd.x++;
|
||||
}
|
||||
|
||||
rearrangeText(true);
|
||||
};
|
||||
|
|
|
@ -301,6 +301,15 @@ TEST_CASE("[TextBox]")
|
|||
|
||||
textBox->keyPressed({sf::Keyboard::Key::BackSpace, false, false, false, false});
|
||||
REQUIRE(textBox->getText() == "AB\nFGHIJKLPQ\n\nTXYZ");
|
||||
|
||||
// The caret should not move when adding a newline at the start of a line that only exists due to word-wrap
|
||||
textBox->setText(""); // Make sure the scrollbar is gone
|
||||
textBox->setText("ABCDEFGHIJKLMONPQRSTUVWXYZ");
|
||||
for (unsigned int i = 0; i < 17; ++i)
|
||||
textBox->keyPressed({sf::Keyboard::Key::Left, false, false, false, false});
|
||||
textBox->keyPressed({sf::Keyboard::Key::Return, false, false, false, false});
|
||||
textBox->keyPressed({sf::Keyboard::Key::Delete, false, false, false, false});
|
||||
REQUIRE(textBox->getText() == "ABCDEFGHIJ\nLMONPQRSTUVWXYZ");
|
||||
}
|
||||
|
||||
SECTION("Copy and Paste")
|
||||
|
|
Loading…
Reference in New Issue