mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-26 10:40:54 +00:00
Checkpoint, still not compiling
This commit is contained in:
parent
ace16b63a9
commit
d1e878f0c6
1 changed files with 24 additions and 47 deletions
|
@ -75,42 +75,12 @@ enum InternalEvent {
|
|||
Clear,
|
||||
Keystroke(Keystroke),
|
||||
Paste(String),
|
||||
Scroll(Scroll),
|
||||
SetSelection(Option<Selection>),
|
||||
UpdateSelection(Point),
|
||||
Copy,
|
||||
}
|
||||
|
||||
impl PartialEq for InternalEvent {
|
||||
fn eq(&self, other: &Self) -> bool {
|
||||
if matches!(self, other) {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Eq for InternalEvent {}
|
||||
|
||||
impl PartialOrd for InternalEvent {
|
||||
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
|
||||
if self.eq(other) {
|
||||
Some(Ordering::Equal)
|
||||
} else if matches!(other, InternalEvent::Copy) {
|
||||
Some(Ordering::Less)
|
||||
} else if matches!(self, InternalEvent::Copy) {
|
||||
Some(Ordering::Greater)
|
||||
} else {
|
||||
Some(Ordering::Equal)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Ord for InternalEvent {
|
||||
fn cmp(&self, other: &Self) -> Ordering {
|
||||
self.partial_cmp(other).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
///A translation struct for Alacritty to communicate with us from their event loop
|
||||
#[derive(Clone)]
|
||||
pub struct ZedListener(UnboundedSender<AlacTermEvent>);
|
||||
|
@ -511,12 +481,20 @@ impl Terminal {
|
|||
self.notify_pty(text.replace("\r\n", "\r").replace('\n', "\r"));
|
||||
}
|
||||
}
|
||||
InternalEvent::Scroll(scroll) => term.scroll_display(*scroll),
|
||||
InternalEvent::SetSelection(sel) => term.selection = sel,
|
||||
InternalEvent::UpdateSelection(point) => {
|
||||
if let Some(mut selection) = term.selection.take() {
|
||||
selection.update(*point, side);
|
||||
term.selection = Some(selection);
|
||||
}
|
||||
}
|
||||
|
||||
InternalEvent::Copy => {
|
||||
if let Some(txt) = term.selection_to_string() {
|
||||
cx.write_to_clipboard(ClipboardItem::new(txt))
|
||||
}
|
||||
}
|
||||
InternalEvent::SetSelection(sel) => {}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -529,13 +507,13 @@ impl Terminal {
|
|||
// - Fix PTYWrite call to not be circular and messy
|
||||
// - Change title to be emitted and maintained externally
|
||||
|
||||
///Write the Input payload to the tty. This locks the terminal so we can scroll it.
|
||||
///Write the Input payload to the tty.
|
||||
pub fn write_to_pty(&mut self, input: String) {
|
||||
self.event_stack
|
||||
.push(InternalEvent::TermEvent(AlacTermEvent::PtyWrite(input)))
|
||||
}
|
||||
|
||||
///Resize the terminal and the PTY. This locks the terminal.
|
||||
///Resize the terminal and the PTY.
|
||||
pub fn set_size(&mut self, new_size: TermDimensions) {
|
||||
self.event_stack
|
||||
.push(InternalEvent::Resize(new_size.into()))
|
||||
|
@ -584,14 +562,9 @@ impl Terminal {
|
|||
f(content, cursor_text)
|
||||
}
|
||||
|
||||
pub fn get_display_offset(&self) -> usize {
|
||||
10
|
||||
// self.term.lock().renderable_content().display_offset
|
||||
}
|
||||
|
||||
///Scroll the terminal
|
||||
pub fn scroll(&self, _scroll: Scroll) {
|
||||
// self.term.lock().scroll_display(scroll)
|
||||
self.event_stack.push(InternalEvent::Scroll(scroll));
|
||||
}
|
||||
|
||||
pub fn click(&self, point: Point, side: Direction, clicks: usize) {
|
||||
|
@ -606,18 +579,22 @@ impl Terminal {
|
|||
let selection =
|
||||
selection_type.map(|selection_type| Selection::new(selection_type, point, side));
|
||||
|
||||
self.set_selection(selection);
|
||||
self.event_stack
|
||||
.push(InternalEvent::SetSelection(selection));
|
||||
}
|
||||
|
||||
pub fn drag(&self, point: Point, side: Direction) {
|
||||
if let Some(mut selection) = self.take_selection() {
|
||||
selection.update(point, side);
|
||||
self.set_selection(Some(selection));
|
||||
}
|
||||
self.event_stack.push(InternalEvent::UpdateSelection(point));
|
||||
}
|
||||
|
||||
///TODO: Check if the mouse_down-then-click assumption holds, so this code works as expected
|
||||
pub fn mouse_down(&self, point: Point, side: Direction) {
|
||||
self.set_selection(Some(Selection::new(SelectionType::Simple, point, side)));
|
||||
self.event_stack
|
||||
.push(InternalEvent::SetSelection(Some(Selection::new(
|
||||
SelectionType::Simple,
|
||||
point,
|
||||
side,
|
||||
))));
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
Loading…
Reference in a new issue