Add modifier support, enter/leave events

This commit is contained in:
Kenny Levinsen
2019-10-02 16:20:10 +02:00
parent 50e2ab25a5
commit 3572d22ba8
8 changed files with 82 additions and 25 deletions
+2
View File
@@ -61,6 +61,8 @@ impl BarWidget {
}
impl Widget for BarWidget {
fn enter(&mut self) {}
fn leave(&mut self) {}
fn size(&self) -> (u32, u32) {
(self.length, self.font_size)
}
+3
View File
@@ -177,6 +177,9 @@ impl Calendar {
}
impl Widget for Calendar {
fn enter(&mut self) {}
fn leave(&mut self) {}
fn size(&self) -> (u32, u32) {
let cal_width = 7 * self.font_size * 3 + self.font_size * 2;
let cal_pad = self.font_size * 3;
+2
View File
@@ -45,6 +45,8 @@ impl Clock {
}
impl Widget for Clock {
fn enter(&mut self) {}
fn leave(&mut self) {}
fn size(&self) -> (u32, u32) {
let digit = (self.size * 0.45).ceil() as u32;
let colon = (self.size * 0.20).ceil() as u32;
+2
View File
@@ -27,6 +27,8 @@ impl Date {
}
impl Widget for Date {
fn enter(&mut self) {}
fn leave(&mut self) {}
fn size(&self) -> (u32, u32) {
((6.5 * self.size).ceil() as u32, self.size.ceil() as u32)
}
+10 -3
View File
@@ -192,6 +192,14 @@ fn wlcopy(s: &str) -> Result<(), String> {
}
impl Widget for Launcher {
fn enter(&mut self) {}
fn leave(&mut self) {
self.input = "".to_string();
self.offset = 0;
self.result = None;
self.dirty = true;
}
fn size(&self) -> (u32, u32) {
(self.length, self.font_size)
}
@@ -269,11 +277,12 @@ impl Widget for Launcher {
fn keyboard_input(
&mut self,
key: u32,
_: ModifiersState,
modifiers: ModifiersState,
_: KeyState,
interpreted: Option<String>,
) {
match key {
keysyms::XKB_KEY_u if modifiers.ctrl => self.leave(),
keysyms::XKB_KEY_BackSpace => {
if self.input.len() > 0 {
self.input = self.input[..self.input.len() - 1].to_string();
@@ -322,7 +331,6 @@ impl Widget for Launcher {
if lexed.len() > 0 {
let _ =
Command::new(lexed[0].clone()).args(&lexed[1..]).spawn();
self.input = "".to_string();
self.tx.send(Cmd::Exit).unwrap();
}
}
@@ -334,7 +342,6 @@ impl Widget for Launcher {
let _ = Command::new(lexed[0].clone())
.args(&lexed[1..])
.spawn();
self.input = "".to_string();
self.tx.send(Cmd::Exit).unwrap();
}
}