mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 19:37:35 +00:00
LibGUI: Make text selection feel better in single-line editors
We should always stay on the only line when selecting in a single-line editor, instead of requiring the user to keep the cursor inside the text when selecting. This broke with the variable-width font changes.
This commit is contained in:
parent
3d5233ae40
commit
bdfd1f1545
1 changed files with 15 additions and 16 deletions
|
@ -164,7 +164,8 @@ TextPosition TextEditor::text_position_at(const Gfx::Point& a_position) const
|
||||||
switch (m_text_alignment) {
|
switch (m_text_alignment) {
|
||||||
case Gfx::TextAlignment::CenterLeft:
|
case Gfx::TextAlignment::CenterLeft:
|
||||||
for_each_visual_line(line_index, [&](const Gfx::Rect& rect, auto& view, size_t start_of_line) {
|
for_each_visual_line(line_index, [&](const Gfx::Rect& rect, auto& view, size_t start_of_line) {
|
||||||
if (rect.contains_vertically(position.y())) {
|
if (is_multi_line() && !rect.contains_vertically(position.y()))
|
||||||
|
return IterationDecision::Continue;
|
||||||
column_index = start_of_line;
|
column_index = start_of_line;
|
||||||
if (position.x() <= 0) {
|
if (position.x() <= 0) {
|
||||||
// We're outside the text on the left side, put cursor at column 0 on this visual line.
|
// We're outside the text on the left side, put cursor at column 0 on this visual line.
|
||||||
|
@ -180,8 +181,6 @@ TextPosition TextEditor::text_position_at(const Gfx::Point& a_position) const
|
||||||
column_index += i;
|
column_index += i;
|
||||||
}
|
}
|
||||||
return IterationDecision::Break;
|
return IterationDecision::Break;
|
||||||
}
|
|
||||||
return IterationDecision::Continue;
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case Gfx::TextAlignment::CenterRight:
|
case Gfx::TextAlignment::CenterRight:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue