jay_compositior: add get_toplevel request
This commit is contained in:
parent
d4c0fb29ba
commit
4f431eec5c
3 changed files with 54 additions and 21 deletions
|
|
@ -39,26 +39,32 @@ impl Drop for JayToplevelSelector {
|
|||
if self.jst.destroyed.get() {
|
||||
return;
|
||||
}
|
||||
let jtl = match self.tl.take() {
|
||||
self.jst.done(self.tl.take());
|
||||
}
|
||||
}
|
||||
|
||||
impl JaySelectToplevel {
|
||||
pub fn done(&self, tl: Option<Rc<dyn ToplevelNode>>) {
|
||||
let jtl = match tl {
|
||||
None => None,
|
||||
Some(toplevel) => {
|
||||
let id = match self.jst.client.new_id() {
|
||||
let id = match self.client.new_id() {
|
||||
Ok(id) => id,
|
||||
Err(e) => {
|
||||
self.jst.client.error(e);
|
||||
self.client.error(e);
|
||||
return;
|
||||
}
|
||||
};
|
||||
let jtl = Rc::new(JayToplevel {
|
||||
id,
|
||||
client: self.jst.client.clone(),
|
||||
client: self.client.clone(),
|
||||
tracker: Default::default(),
|
||||
toplevel,
|
||||
destroyed: Cell::new(false),
|
||||
version: self.jst.version,
|
||||
version: self.version,
|
||||
});
|
||||
track!(self.jst.client, jtl);
|
||||
self.jst.client.add_server_obj(&jtl);
|
||||
track!(self.client, jtl);
|
||||
self.client.add_server_obj(&jtl);
|
||||
jtl.toplevel
|
||||
.tl_data()
|
||||
.jay_toplevels
|
||||
|
|
@ -67,20 +73,28 @@ impl Drop for JayToplevelSelector {
|
|||
}
|
||||
};
|
||||
match jtl {
|
||||
None => self.jst.send_done(JayToplevelId::NONE),
|
||||
None => self.send_done(JayToplevelId::NONE),
|
||||
Some(jtl) => {
|
||||
self.jst.send_done(jtl.id);
|
||||
self.send_done(jtl.id);
|
||||
if jtl.version >= ID_SINCE {
|
||||
jtl.send_id();
|
||||
jtl.send_done();
|
||||
}
|
||||
}
|
||||
}
|
||||
let _ = self.jst.client.remove_obj(&*self.jst);
|
||||
let _ = self.client.remove_obj(self);
|
||||
}
|
||||
|
||||
pub fn new(client: &Rc<Client>, id: JaySelectToplevelId, version: Version) -> Rc<Self> {
|
||||
Rc::new(JaySelectToplevel {
|
||||
id,
|
||||
client: client.clone(),
|
||||
tracker: Default::default(),
|
||||
destroyed: Cell::new(false),
|
||||
version,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl JaySelectToplevel {
|
||||
fn send_done(&self, id: JayToplevelId) {
|
||||
self.client.event(Done {
|
||||
self_id: self.id,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue