config: allow destroying keymaps
This commit is contained in:
parent
3eb0f61ec1
commit
f1a3705699
4 changed files with 21 additions and 0 deletions
|
|
@ -782,6 +782,10 @@ impl Client {
|
||||||
has
|
has
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn destroy_keymap(&self, keymap: Keymap) {
|
||||||
|
self.send(&ClientMessage::DestroyKeymap { keymap })
|
||||||
|
}
|
||||||
|
|
||||||
pub fn seat_set_keymap(&self, seat: Seat, keymap: Keymap) {
|
pub fn seat_set_keymap(&self, seat: Seat, keymap: Keymap) {
|
||||||
self.send(&ClientMessage::SeatSetKeymap { seat, keymap })
|
self.send(&ClientMessage::SeatSetKeymap { seat, keymap })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -382,6 +382,9 @@ pub enum ClientMessage<'a> {
|
||||||
fds: Vec<(i32, i32)>,
|
fds: Vec<(i32, i32)>,
|
||||||
},
|
},
|
||||||
DisableDefaultSeat,
|
DisableDefaultSeat,
|
||||||
|
DestroyKeymap {
|
||||||
|
keymap: Keymap,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,15 @@ impl Keymap {
|
||||||
pub fn is_invalid(self) -> bool {
|
pub fn is_invalid(self) -> bool {
|
||||||
self == Self::INVALID
|
self == Self::INVALID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Destroys this reference to the keymap.
|
||||||
|
///
|
||||||
|
/// Seats that are currently using this keymap are unaffected.
|
||||||
|
pub fn destroy(self) {
|
||||||
|
if self.is_valid() {
|
||||||
|
get!().destroy_keymap(self);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parses a keymap.
|
/// Parses a keymap.
|
||||||
|
|
|
||||||
|
|
@ -1250,6 +1250,10 @@ impl ConfigProxyHandler {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn handle_destroy_keymap(&self, keymap: Keymap) {
|
||||||
|
self.keymaps.remove(&keymap);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn handle_request(self: &Rc<Self>, msg: &[u8]) {
|
pub fn handle_request(self: &Rc<Self>, msg: &[u8]) {
|
||||||
if let Err(e) = self.handle_request_(msg) {
|
if let Err(e) = self.handle_request_(msg) {
|
||||||
log::error!("Could not handle client request: {}", ErrorFmt(e));
|
log::error!("Could not handle client request: {}", ErrorFmt(e));
|
||||||
|
|
@ -1515,6 +1519,7 @@ impl ConfigProxyHandler {
|
||||||
fds,
|
fds,
|
||||||
} => self.handle_run(prog, args, env, fds).wrn("run")?,
|
} => self.handle_run(prog, args, env, fds).wrn("run")?,
|
||||||
ClientMessage::DisableDefaultSeat => self.state.create_default_seat.set(false),
|
ClientMessage::DisableDefaultSeat => self.state.create_default_seat.set(false),
|
||||||
|
ClientMessage::DestroyKeymap { keymap } => self.handle_destroy_keymap(keymap),
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue