editor: Do not offset text in single line editors by default (#30599)
Follow-up to #30138 In the linked PR, I enabled the content offset for all editors by default. However, this introduced a small regression: There are some editors where we do not want the text to be offset, most notably the rename and the filename editor. This PR adds a method to disable the content offset for specific editors. I specifically decided on an opt-out approach, since I think that having the small offset for most editors is actually a benefit instead of a disadvantage. However, open to change that or to disable the offset for all editors but full mode editors by default if that should be preferred. | `main` | This PR | | --- | --- | |  |  | Release Notes: - N/A
This commit is contained in:
parent
e6f51966a1
commit
6363fdab88
3 changed files with 26 additions and 4 deletions
|
@ -107,6 +107,7 @@ impl MessageEditor {
|
|||
let this = cx.entity().downgrade();
|
||||
editor.update(cx, |editor, cx| {
|
||||
editor.set_soft_wrap_mode(SoftWrap::EditorWidth, cx);
|
||||
editor.set_offset_content(false, cx);
|
||||
editor.set_use_autoclose(false);
|
||||
editor.set_show_gutter(false, cx);
|
||||
editor.set_show_wrap_guides(false, cx);
|
||||
|
|
|
@ -923,6 +923,7 @@ pub struct Editor {
|
|||
show_gutter: bool,
|
||||
show_scrollbars: bool,
|
||||
minimap_visibility: MinimapVisibility,
|
||||
offset_content: bool,
|
||||
disable_expand_excerpt_buttons: bool,
|
||||
show_line_numbers: Option<bool>,
|
||||
use_relative_line_numbers: Option<bool>,
|
||||
|
@ -1761,6 +1762,7 @@ impl Editor {
|
|||
show_local_selections: true,
|
||||
show_scrollbars: full_mode,
|
||||
minimap_visibility: MinimapVisibility::for_mode(&mode, cx),
|
||||
offset_content: !matches!(mode, EditorMode::SingleLine { .. }),
|
||||
show_breadcrumbs: EditorSettings::get_global(cx).toolbar.breadcrumbs,
|
||||
show_gutter: mode.is_full(),
|
||||
show_line_numbers: None,
|
||||
|
@ -16921,6 +16923,17 @@ impl Editor {
|
|||
self.set_minimap_visibility(MinimapVisibility::Disabled, window, cx);
|
||||
}
|
||||
|
||||
/// Normally the text in full mode and auto height editors is padded on the
|
||||
/// left side by roughly half a character width for improved hit testing.
|
||||
///
|
||||
/// Use this method to disable this for cases where this is not wanted (e.g.
|
||||
/// if you want to align the editor text with some other text above or below)
|
||||
/// or if you want to add this padding to single-line editors.
|
||||
pub fn set_offset_content(&mut self, offset_content: bool, cx: &mut Context<Self>) {
|
||||
self.offset_content = offset_content;
|
||||
cx.notify();
|
||||
}
|
||||
|
||||
pub fn set_show_line_numbers(&mut self, show_line_numbers: bool, cx: &mut Context<Self>) {
|
||||
self.show_line_numbers = Some(show_line_numbers);
|
||||
cx.notify();
|
||||
|
|
|
@ -7343,9 +7343,12 @@ impl Element for EditorElement {
|
|||
self.max_line_number_width(&snapshot, window, cx),
|
||||
cx,
|
||||
)
|
||||
.unwrap_or_else(|| {
|
||||
GutterDimensions::default_with_margin(font_id, font_size, cx)
|
||||
});
|
||||
.or_else(|| {
|
||||
self.editor.read(cx).offset_content.then(|| {
|
||||
GutterDimensions::default_with_margin(font_id, font_size, cx)
|
||||
})
|
||||
})
|
||||
.unwrap_or_default();
|
||||
let text_width = bounds.size.width - gutter_dimensions.width;
|
||||
|
||||
let settings = EditorSettings::get_global(cx);
|
||||
|
@ -9391,7 +9394,12 @@ fn compute_auto_height_layout(
|
|||
let mut snapshot = editor.snapshot(window, cx);
|
||||
let gutter_dimensions = snapshot
|
||||
.gutter_dimensions(font_id, font_size, max_line_number_width, cx)
|
||||
.unwrap_or_else(|| GutterDimensions::default_with_margin(font_id, font_size, cx));
|
||||
.or_else(|| {
|
||||
editor
|
||||
.offset_content
|
||||
.then(|| GutterDimensions::default_with_margin(font_id, font_size, cx))
|
||||
})
|
||||
.unwrap_or_default();
|
||||
|
||||
editor.gutter_dimensions = gutter_dimensions;
|
||||
let text_width = width - gutter_dimensions.width;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue