mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-26 00:19:46 +00:00
Only allow invisbles in local and leader selections
This commit is contained in:
parent
98ff18c430
commit
39bddfc7b7
1 changed files with 13 additions and 9 deletions
|
@ -784,14 +784,18 @@ impl EditorElement {
|
|||
|
||||
let mut cursors = SmallVec::<[Cursor; 32]>::new();
|
||||
let corner_radius = 0.15 * layout.position_map.line_height;
|
||||
let mut selection_ranges = SmallVec::<[Range<DisplayPoint>; 32]>::new();
|
||||
let mut invisible_display_ranges = SmallVec::<[Range<DisplayPoint>; 32]>::new();
|
||||
|
||||
for (replica_id, selections) in &layout.selections {
|
||||
let selection_style = style.replica_selection_style(*replica_id);
|
||||
let replica_id = *replica_id;
|
||||
let selection_style = style.replica_selection_style(replica_id);
|
||||
|
||||
for selection in selections {
|
||||
if !selection.range.is_empty() && *replica_id == local_replica_id {
|
||||
selection_ranges.push(selection.range.clone());
|
||||
if !selection.range.is_empty()
|
||||
&& (replica_id == local_replica_id
|
||||
|| Some(replica_id) == editor.leader_replica_id)
|
||||
{
|
||||
invisible_display_ranges.push(selection.range.clone());
|
||||
}
|
||||
self.paint_highlighted_range(
|
||||
scene,
|
||||
|
@ -806,7 +810,7 @@ impl EditorElement {
|
|||
bounds,
|
||||
);
|
||||
|
||||
if editor.show_local_cursors(cx) || *replica_id != local_replica_id {
|
||||
if editor.show_local_cursors(cx) || replica_id != local_replica_id {
|
||||
let cursor_position = selection.head;
|
||||
if layout
|
||||
.visible_display_row_range
|
||||
|
@ -879,7 +883,7 @@ impl EditorElement {
|
|||
scroll_left,
|
||||
visible_text_bounds,
|
||||
cx,
|
||||
&selection_ranges,
|
||||
&invisible_display_ranges,
|
||||
visible_bounds,
|
||||
)
|
||||
}
|
||||
|
@ -1777,7 +1781,7 @@ impl LineWithInvisibles {
|
|||
line_height: f32,
|
||||
) {
|
||||
let settings = cx.global::<Settings>();
|
||||
let regions_to_hit = match settings
|
||||
let allowed_invisibles_regions = match settings
|
||||
.editor_overrides
|
||||
.show_whitespaces
|
||||
.or(settings.editor_defaults.show_whitespaces)
|
||||
|
@ -1799,9 +1803,9 @@ impl LineWithInvisibles {
|
|||
(layout.position_map.em_width - invisible_symbol.width()).max(0.0) / 2.0;
|
||||
let origin = content_origin + vec2f(-scroll_left + x_offset + invisible_offset, line_y);
|
||||
|
||||
if let Some(regions_to_hit) = regions_to_hit {
|
||||
if let Some(allowed_regions) = allowed_invisibles_regions {
|
||||
let invisible_point = DisplayPoint::new(row, token_offset as u32);
|
||||
if !regions_to_hit
|
||||
if !allowed_regions
|
||||
.iter()
|
||||
.any(|region| region.start <= invisible_point && invisible_point < region.end)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue