editor: Improve CodeEditor inset and line number width. (#1255)

<img width="756" height="580" alt="image"
src="https://github.com/user-attachments/assets/5748e7b3-74de-417a-856f-5db05c66f892"
/>
This commit is contained in:
Jason Lee 2025-09-16 21:50:09 +08:00 committed by GitHub
parent 3c39641486
commit 35568124bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 6 additions and 5 deletions

View file

@ -649,6 +649,7 @@ impl Render for Example {
.child( .child(
TextInput::new(&self.editor) TextInput::new(&self.editor)
.bordered(false) .bordered(false)
.p_0()
.h_full() .h_full()
.font_family("Monaco") .font_family("Monaco")
.text_size(px(12.)) .text_size(px(12.))

View file

@ -599,10 +599,10 @@ impl Element for TextElement {
// Calculate the width of the line numbers // Calculate the width of the line numbers
let empty_line_number = window.text_system().shape_line( let empty_line_number = window.text_system().shape_line(
"++++".into(), "+++++".into(),
font_size, font_size,
&[TextRun { &[TextRun {
len: 4, len: 5,
font: style.font(), font: style.font(),
color: gpui::black(), color: gpui::black(),
background_color: None, background_color: None,
@ -612,7 +612,7 @@ impl Element for TextElement {
None, None,
); );
let line_number_width = if state.mode.line_number() { let line_number_width = if state.mode.line_number() {
empty_line_number.width + LINE_NUMBER_RIGHT_MARGIN empty_line_number.width + px(6.) + LINE_NUMBER_RIGHT_MARGIN
} else { } else {
px(0.) px(0.)
}; };
@ -811,7 +811,7 @@ impl Element for TextElement {
let ix = last_layout.visible_range.start + ix; let ix = last_layout.visible_range.start + ix;
let line_no = ix + 1; let line_no = ix + 1;
let mut line_no_text = format!("{:>4}", line_no); let mut line_no_text = format!("{:>5}", line_no);
if !line.wrap_boundaries.is_empty() { if !line.wrap_boundaries.is_empty() {
line_no_text.push_str(&"\n ".repeat(line.wrap_boundaries.len())); line_no_text.push_str(&"\n ".repeat(line.wrap_boundaries.len()));
} }
@ -972,7 +972,7 @@ impl Element for TextElement {
Bounds { Bounds {
origin: input_bounds.origin, origin: input_bounds.origin,
size: size( size: size(
prepaint.last_layout.line_number_width, prepaint.last_layout.line_number_width - LINE_NUMBER_RIGHT_MARGIN,
input_bounds.size.height, input_bounds.size.height,
), ),
}, },