self.vcontrol.try_send_video(PktSendEvent::HurryUp);
},
Keycode::O => {
- self.osd.toggle();
+ if keymod.contains(Mod::RSHIFTMOD) || keymod.contains(Mod::LSHIFTMOD) {
+ self.osd.toggle_perm();
+ } else {
+ self.osd.toggle();
+ }
},
_ => {},
};
text: Vec<u8>,
text_stride: usize,
duration: u64,
+ perm: bool,
}
impl OSD {
}
pub fn set_duration(&mut self, duration: u64) { self.duration = duration; }
pub fn toggle(&mut self) {
+ if self.perm {
+ self.perm = false;
+ self.time = None;
+ return;
+ }
if self.time.is_none() {
self.time = Some(Instant::now());
} else {
self.time = None;
}
}
+ pub fn toggle_perm(&mut self) {
+ if !self.perm {
+ self.perm = true;
+ } else {
+ self.perm = false;
+ self.time = None;
+ }
+ }
pub fn update(&mut self) {
if let Some(time) = self.time {
if time.elapsed().as_millis() > 3000 {
}
}
}
- pub fn is_active(&self) -> bool { self.time.is_some() }
+ pub fn is_active(&self) -> bool { self.time.is_some() || self.perm }
pub fn prepare(&mut self, ts: u64) {
self.update();
if !self.is_active() {