jay_compositior: add get_toplevel request
This commit is contained in:
parent
d4c0fb29ba
commit
4f431eec5c
3 changed files with 54 additions and 21 deletions
|
|
@ -23,12 +23,12 @@ use {
|
|||
leaks::Tracker,
|
||||
object::{Object, Version},
|
||||
screenshoter::take_screenshot,
|
||||
utils::errorfmt::ErrorFmt,
|
||||
utils::{errorfmt::ErrorFmt, toplevel_identifier::ToplevelIdentifier},
|
||||
wire::{jay_compositor::*, JayCompositorId, JayScreenshotId},
|
||||
},
|
||||
bstr::ByteSlice,
|
||||
log::Level,
|
||||
std::{cell::Cell, ops::Deref, rc::Rc},
|
||||
std::{cell::Cell, ops::Deref, rc::Rc, str::FromStr},
|
||||
thiserror::Error,
|
||||
};
|
||||
|
||||
|
|
@ -364,13 +364,7 @@ impl JayCompositorRequestHandler for JayCompositor {
|
|||
|
||||
fn select_toplevel(&self, req: SelectToplevel, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
let seat = self.client.lookup(req.seat)?;
|
||||
let obj = Rc::new(JaySelectToplevel {
|
||||
id: req.id,
|
||||
client: self.client.clone(),
|
||||
tracker: Default::default(),
|
||||
destroyed: Cell::new(false),
|
||||
version: self.version,
|
||||
});
|
||||
let obj = JaySelectToplevel::new(&self.client, req.id, self.version);
|
||||
track!(self.client, obj);
|
||||
self.client.add_client_obj(&obj)?;
|
||||
let selector = JayToplevelSelector {
|
||||
|
|
@ -423,6 +417,26 @@ impl JayCompositorRequestHandler for JayCompositor {
|
|||
self.client.add_client_obj(&obj)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn get_toplevel(&self, req: GetToplevel<'_>, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
let obj = JaySelectToplevel::new(&self.client, req.id, self.version);
|
||||
track!(self.client, obj);
|
||||
self.client.add_client_obj(&obj)?;
|
||||
let tl = match ToplevelIdentifier::from_str(req.toplevel_id) {
|
||||
Ok(id) => self
|
||||
.client
|
||||
.state
|
||||
.toplevels
|
||||
.get(&id)
|
||||
.and_then(|w| w.upgrade()),
|
||||
Err(e) => {
|
||||
log::error!("Could not parse toplevel id: {}", ErrorFmt(e));
|
||||
None
|
||||
}
|
||||
};
|
||||
obj.done(tl);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
object_base! {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue