state.rs

 1use crate::signature_help::popover::SignatureHelpPopover;
 2use crate::signature_help::SignatureHelpHiddenBy;
 3use gpui::Task;
 4
 5#[derive(Default, Debug)]
 6pub struct SignatureHelpState {
 7    task: Option<Task<()>>,
 8    popover: Option<SignatureHelpPopover>,
 9    hidden_by: Option<SignatureHelpHiddenBy>,
10    backspace_pressed: bool,
11}
12
13impl SignatureHelpState {
14    pub fn set_task(&mut self, task: Task<()>) {
15        self.task = Some(task);
16        self.hidden_by = None;
17    }
18
19    pub fn kill_task(&mut self) {
20        self.task = None;
21    }
22
23    pub fn popover(&self) -> Option<&SignatureHelpPopover> {
24        self.popover.as_ref()
25    }
26
27    pub fn popover_mut(&mut self) -> Option<&mut SignatureHelpPopover> {
28        self.popover.as_mut()
29    }
30
31    pub fn backspace_pressed(&self) -> bool {
32        self.backspace_pressed
33    }
34
35    pub fn set_backspace_pressed(&mut self, backspace_pressed: bool) {
36        self.backspace_pressed = backspace_pressed;
37    }
38
39    pub fn set_popover(&mut self, popover: SignatureHelpPopover) {
40        self.popover = Some(popover);
41        self.hidden_by = None;
42    }
43
44    pub fn hide(&mut self, hidden_by: SignatureHelpHiddenBy) {
45        if self.hidden_by.is_none() {
46            self.popover = None;
47            self.hidden_by = Some(hidden_by);
48        }
49    }
50
51    pub fn hidden_by_selection(&self) -> bool {
52        self.hidden_by == Some(SignatureHelpHiddenBy::Selection)
53    }
54
55    pub fn is_shown(&self) -> bool {
56        self.popover.is_some()
57    }
58}
59
60#[cfg(test)]
61impl SignatureHelpState {
62    pub fn task(&self) -> Option<&Task<()>> {
63        self.task.as_ref()
64    }
65}