fix: do not subtract the scroll twice, causing highlight mis-alignment
This commit is contained in:
parent
e1fc659e64
commit
bc40cde8cb
1 changed files with 3 additions and 5 deletions
|
|
@ -151,7 +151,6 @@ impl editor::Editor for Editor {
|
||||||
let cursor = match internal.editor.selection_bounds() {
|
let cursor = match internal.editor.selection_bounds() {
|
||||||
Some((start, end)) => {
|
Some((start, end)) => {
|
||||||
let line_height = buffer.metrics().line_height;
|
let line_height = buffer.metrics().line_height;
|
||||||
let scroll_y = buffer.scroll().vertical;
|
|
||||||
|
|
||||||
let regions = buffer
|
let regions = buffer
|
||||||
.layout_runs()
|
.layout_runs()
|
||||||
|
|
@ -165,7 +164,7 @@ impl editor::Editor for Editor {
|
||||||
.map(move |(x, width)| Rectangle {
|
.map(move |(x, width)| Rectangle {
|
||||||
x,
|
x,
|
||||||
width,
|
width,
|
||||||
y: line_top - scroll_y,
|
y: line_top,
|
||||||
height: line_height,
|
height: line_height,
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
|
|
@ -175,8 +174,6 @@ impl editor::Editor for Editor {
|
||||||
Selection::Range(regions)
|
Selection::Range(regions)
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
let scroll_y = buffer.scroll().vertical;
|
|
||||||
|
|
||||||
let point = buffer
|
let point = buffer
|
||||||
.layout_runs()
|
.layout_runs()
|
||||||
.filter(|run| run.line_i == cursor.line)
|
.filter(|run| run.line_i == cursor.line)
|
||||||
|
|
@ -184,12 +181,13 @@ impl editor::Editor for Editor {
|
||||||
run.cursor_position(&cursor).map(|x| {
|
run.cursor_position(&cursor).map(|x| {
|
||||||
let buffer_w = buffer.size().0.unwrap_or(x + 1.0);
|
let buffer_w = buffer.size().0.unwrap_or(x + 1.0);
|
||||||
let x = x.min((buffer_w - 1.0).max(0.0));
|
let x = x.min((buffer_w - 1.0).max(0.0));
|
||||||
Point::new(x, run.line_top - scroll_y)
|
Point::new(x, run.line_top)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.unwrap_or_else(|| {
|
.unwrap_or_else(|| {
|
||||||
// Fallback: cursor not found in any run (e.g. empty buffer).
|
// Fallback: cursor not found in any run (e.g. empty buffer).
|
||||||
let line_height = buffer.metrics().line_height;
|
let line_height = buffer.metrics().line_height;
|
||||||
|
let scroll_y = buffer.scroll().vertical;
|
||||||
let visual_lines_offset =
|
let visual_lines_offset =
|
||||||
visual_lines_offset(cursor.line, buffer);
|
visual_lines_offset(cursor.line, buffer);
|
||||||
Point::new(
|
Point::new(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue