From 4a5c030c6af4e4f1a9a38d344b48c58583107e06 Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Sat, 18 Jan 2025 21:58:12 +0000 Subject: [PATCH] editor: Hide horizontal scrollbar if not visible (#23337) This PR fixes two visual issues, that were caused by the fact that we were always painting the horizontal scrollbar even if there is no horizontal scrolling possible Obscuring deleted lines when using the inline assistant: https://github.com/user-attachments/assets/f8460c3f-403e-40a6-8622-65268ba2d875 Cutting off text even when horizontal scrolling is not possible: https://github.com/user-attachments/assets/23c909f7-1c23-4693-8edc-40a2f089d4a8 This issue was only present in some themes (e.g. Nord, Catpuccin) Closes #22716 Release Notes: - Fixed an issue where horizontal scrollbars of editors would always be painted (even if there is no horizontal scrolling to be done) --- crates/assistant/src/inline_assistant.rs | 1 + crates/assistant2/src/inline_assistant.rs | 1 + crates/editor/src/element.rs | 8 ++++++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/assistant/src/inline_assistant.rs b/crates/assistant/src/inline_assistant.rs index 8acdaec50f4cf..c9955cb9b4996 100644 --- a/crates/assistant/src/inline_assistant.rs +++ b/crates/assistant/src/inline_assistant.rs @@ -1204,6 +1204,7 @@ impl InlineAssistant { editor.set_show_wrap_guides(false, cx); editor.set_show_gutter(false, cx); editor.scroll_manager.set_forbid_vertical_scroll(true); + editor.set_show_scrollbars(false, cx); editor.set_read_only(true); editor.set_show_inline_completions(Some(false), cx); editor.highlight_rows::( diff --git a/crates/assistant2/src/inline_assistant.rs b/crates/assistant2/src/inline_assistant.rs index 6c142d376a082..4c0b31741c1ec 100644 --- a/crates/assistant2/src/inline_assistant.rs +++ b/crates/assistant2/src/inline_assistant.rs @@ -1276,6 +1276,7 @@ impl InlineAssistant { editor.set_show_wrap_guides(false, cx); editor.set_show_gutter(false, cx); editor.scroll_manager.set_forbid_vertical_scroll(true); + editor.set_show_scrollbars(false, cx); editor.set_read_only(true); editor.set_show_inline_completions(Some(false), cx); editor.highlight_rows::( diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 112b65f8fe208..90abd3d629430 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -1333,11 +1333,15 @@ impl EditorElement { total_text_units .horizontal .zip(track_bounds.horizontal) - .map(|(total_text_units_x, track_bounds_x)| { + .and_then(|(total_text_units_x, track_bounds_x)| { + if text_units_per_page.horizontal >= total_text_units_x { + return None; + } + let thumb_percent = (text_units_per_page.horizontal / total_text_units_x).min(1.); - track_bounds_x.size.width * thumb_percent + Some(track_bounds_x.size.width * thumb_percent) }), total_text_units.vertical.zip(track_bounds.vertical).map( |(total_text_units_y, track_bounds_y)| {