Make read only buffers feel more read only
This commit is contained in:
parent
84171787a5
commit
6877bd4969
4 changed files with 29 additions and 4 deletions
|
@ -8605,7 +8605,8 @@ impl Editor {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn show_local_cursors(&self, cx: &WindowContext) -> bool {
|
pub fn show_local_cursors(&self, cx: &WindowContext) -> bool {
|
||||||
self.blink_manager.read(cx).visible() && self.focus_handle.is_focused(cx)
|
(self.read_only(cx) || self.blink_manager.read(cx).visible())
|
||||||
|
&& self.focus_handle.is_focused(cx)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_buffer_changed(&mut self, _: Model<MultiBuffer>, cx: &mut ViewContext<Self>) {
|
fn on_buffer_changed(&mut self, _: Model<MultiBuffer>, cx: &mut ViewContext<Self>) {
|
||||||
|
|
|
@ -1901,7 +1901,13 @@ impl EditorElement {
|
||||||
layouts.push(layout);
|
layouts.push(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
selections.push((style.local_player, layouts));
|
let player = if editor.read_only(cx) {
|
||||||
|
cx.theme().players().read_only()
|
||||||
|
} else {
|
||||||
|
style.local_player
|
||||||
|
};
|
||||||
|
|
||||||
|
selections.push((player, layouts));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(collaboration_hub) = &editor.collaboration_hub {
|
if let Some(collaboration_hub) = &editor.collaboration_hub {
|
||||||
|
|
|
@ -339,6 +339,15 @@ impl Hsla {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn grayscale(&self) -> Self {
|
||||||
|
Hsla {
|
||||||
|
h: self.h,
|
||||||
|
s: 0.,
|
||||||
|
l: self.l,
|
||||||
|
a: self.a,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Fade out the color by a given factor. This factor should be between 0.0 and 1.0.
|
/// Fade out the color by a given factor. This factor should be between 0.0 and 1.0.
|
||||||
/// Where 0.0 will leave the color unchanged, and 1.0 will completely fade out the color.
|
/// Where 0.0 will leave the color unchanged, and 1.0 will completely fade out the color.
|
||||||
pub fn fade_out(&mut self, factor: f32) {
|
pub fn fade_out(&mut self, factor: f32) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use gpui::Hsla;
|
use gpui::{hsla, Hsla};
|
||||||
use serde_derive::Deserialize;
|
use serde_derive::Deserialize;
|
||||||
|
|
||||||
use crate::{amber, blue, jade, lime, orange, pink, purple, red};
|
use crate::{amber, blue, gray, jade, lime, orange, pink, purple, red};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, Deserialize, Default)]
|
#[derive(Debug, Clone, Copy, Deserialize, Default)]
|
||||||
pub struct PlayerColor {
|
pub struct PlayerColor {
|
||||||
|
@ -131,6 +131,15 @@ impl PlayerColors {
|
||||||
*self.0.last().unwrap()
|
*self.0.last().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn read_only(&self) -> PlayerColor {
|
||||||
|
let local = self.local();
|
||||||
|
PlayerColor {
|
||||||
|
cursor: local.cursor.grayscale(),
|
||||||
|
background: local.background.grayscale(),
|
||||||
|
selection: local.selection.grayscale(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn color_for_participant(&self, participant_index: u32) -> PlayerColor {
|
pub fn color_for_participant(&self, participant_index: u32) -> PlayerColor {
|
||||||
let len = self.0.len() - 1;
|
let len = self.0.len() - 1;
|
||||||
self.0[(participant_index as usize % len) + 1]
|
self.0[(participant_index as usize % len) + 1]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue