@@ -1047,51 +1047,53 @@ impl EditorElement {
..Default::default()
});
- let diff_style = cx.global::<Settings>().theme.editor.diff.clone();
- for hunk in layout
- .position_map
- .snapshot
- .buffer_snapshot
- .git_diff_hunks_in_range(0..(max_row.floor() as u32))
- {
- let start_display = Point::new(hunk.buffer_range.start, 0)
- .to_display_point(&layout.position_map.snapshot.display_snapshot);
- let end_display = Point::new(hunk.buffer_range.end, 0)
- .to_display_point(&layout.position_map.snapshot.display_snapshot);
- let start_y = y_for_row(start_display.row() as f32);
- let mut end_y = if hunk.buffer_range.start == hunk.buffer_range.end {
- y_for_row((end_display.row() + 1) as f32)
- } else {
- y_for_row((end_display.row()) as f32)
- };
+ if layout.is_singleton {
+ let diff_style = theme::current(cx).editor.diff.clone();
+ for hunk in layout
+ .position_map
+ .snapshot
+ .buffer_snapshot
+ .git_diff_hunks_in_range(0..(max_row.floor() as u32))
+ {
+ let start_display = Point::new(hunk.buffer_range.start, 0)
+ .to_display_point(&layout.position_map.snapshot.display_snapshot);
+ let end_display = Point::new(hunk.buffer_range.end, 0)
+ .to_display_point(&layout.position_map.snapshot.display_snapshot);
+ let start_y = y_for_row(start_display.row() as f32);
+ let mut end_y = if hunk.buffer_range.start == hunk.buffer_range.end {
+ y_for_row((end_display.row() + 1) as f32)
+ } else {
+ y_for_row((end_display.row()) as f32)
+ };
- if end_y - start_y < 1. {
- end_y = start_y + 1.;
- }
- let bounds = RectF::from_points(vec2f(left, start_y), vec2f(right, end_y));
-
- let color = match hunk.status() {
- DiffHunkStatus::Added => diff_style.inserted,
- DiffHunkStatus::Modified => diff_style.modified,
- DiffHunkStatus::Removed => diff_style.deleted,
- };
-
- let border = Border {
- width: 1.,
- color: style.thumb.border.color,
- overlay: false,
- top: false,
- right: true,
- bottom: false,
- left: true,
- };
+ if end_y - start_y < 1. {
+ end_y = start_y + 1.;
+ }
+ let bounds = RectF::from_points(vec2f(left, start_y), vec2f(right, end_y));
- scene.push_quad(Quad {
- bounds,
- background: Some(color),
- border,
- corner_radius: style.thumb.corner_radius,
- })
+ let color = match hunk.status() {
+ DiffHunkStatus::Added => diff_style.inserted,
+ DiffHunkStatus::Modified => diff_style.modified,
+ DiffHunkStatus::Removed => diff_style.deleted,
+ };
+
+ let border = Border {
+ width: 1.,
+ color: style.thumb.border.color,
+ overlay: false,
+ top: false,
+ right: true,
+ bottom: false,
+ left: true,
+ };
+
+ scene.push_quad(Quad {
+ bounds,
+ background: Some(color),
+ border,
+ corner_radius: style.thumb.corner_radius,
+ })
+ }
}
scene.push_quad(Quad {
@@ -2063,9 +2065,10 @@ impl Element<Editor> for EditorElement {
));
}
- let show_scrollbars = match cx.global::<Settings>().show_scrollbars {
- settings::ShowScrollbars::Auto => {
- snapshot.has_scrollbar_info() || editor.scroll_manager.scrollbars_visible()
+ let show_scrollbars = match settings::get::<EditorSettings>(cx).show_scrollbars {
+ ShowScrollbars::Auto => {
+ snapshot.has_scrollbar_info(is_singleton)
+ || editor.scroll_manager.scrollbars_visible()
}
settings::ShowScrollbars::System => editor.scroll_manager.scrollbars_visible(),
settings::ShowScrollbars::Always => true,
@@ -2288,6 +2291,7 @@ impl Element<Editor> for EditorElement {
text_size,
scrollbar_row_range,
show_scrollbars,
+ is_singleton,
max_row,
gutter_margin,
active_rows,
@@ -2443,6 +2447,7 @@ pub struct LayoutState {
selections: Vec<(ReplicaId, Vec<SelectionLayout>)>,
scrollbar_row_range: Range<f32>,
show_scrollbars: bool,
+ is_singleton: bool,
max_row: u32,
context_menu: Option<(DisplayPoint, AnyElement<Editor>)>,
code_actions_indicator: Option<(u32, AnyElement<Editor>)>,