tree: move common code out of ToplevelNode trait
This commit is contained in:
parent
8430278264
commit
1d1d542839
12 changed files with 100 additions and 90 deletions
|
|
@ -12,7 +12,7 @@ use {
|
|||
state::State,
|
||||
tree::{
|
||||
Direction, FindTreeResult, FoundNode, Node, NodeId, NodeVisitor, StackedNode,
|
||||
ToplevelData, ToplevelNode, WorkspaceNode,
|
||||
ToplevelData, ToplevelNode, ToplevelNodeBase, WorkspaceNode,
|
||||
},
|
||||
utils::{clonecell::CloneCell, copyhashmap::CopyHashMap, linkedlist::LinkedNode},
|
||||
wire::WlSurfaceId,
|
||||
|
|
@ -357,9 +357,7 @@ impl Node for Xwindow {
|
|||
}
|
||||
}
|
||||
|
||||
impl ToplevelNode for Xwindow {
|
||||
tl_node_impl!();
|
||||
|
||||
impl ToplevelNodeBase for Xwindow {
|
||||
fn tl_data(&self) -> &ToplevelData {
|
||||
&self.toplevel_data
|
||||
}
|
||||
|
|
@ -410,17 +408,19 @@ impl ToplevelNode for Xwindow {
|
|||
.push(XWaylandEvent::Close(self.data.clone()));
|
||||
}
|
||||
|
||||
fn tl_set_visible(&self, visible: bool) {
|
||||
fn tl_set_visible_impl(&self, visible: bool) {
|
||||
self.x.surface.set_visible(visible);
|
||||
self.toplevel_data.set_visible(self, visible);
|
||||
}
|
||||
|
||||
fn tl_destroy(&self) {
|
||||
self.toplevel_data.destroy_node(self);
|
||||
fn tl_destroy_impl(&self) {
|
||||
self.display_link.borrow_mut().take();
|
||||
self.x.surface.destroy_node();
|
||||
}
|
||||
|
||||
fn tl_last_active_child(self: Rc<Self>) -> Rc<dyn ToplevelNode> {
|
||||
self
|
||||
}
|
||||
|
||||
fn tl_scanout_surface(&self) -> Option<Rc<WlSurface>> {
|
||||
Some(self.x.surface.clone())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ use {
|
|||
state::State,
|
||||
tree::{
|
||||
Direction, FindTreeResult, FoundNode, Node, NodeId, NodeVisitor, ToplevelData,
|
||||
ToplevelNode, ToplevelNodeId, WorkspaceNode,
|
||||
ToplevelNode, ToplevelNodeBase, ToplevelNodeId, WorkspaceNode,
|
||||
},
|
||||
utils::{
|
||||
buffd::{MsgParser, MsgParserError},
|
||||
|
|
@ -453,9 +453,7 @@ impl Node for XdgToplevel {
|
|||
}
|
||||
}
|
||||
|
||||
impl ToplevelNode for XdgToplevel {
|
||||
tl_node_impl!();
|
||||
|
||||
impl ToplevelNodeBase for XdgToplevel {
|
||||
fn tl_data(&self) -> &ToplevelData {
|
||||
&self.toplevel_data
|
||||
}
|
||||
|
|
@ -499,13 +497,12 @@ impl ToplevelNode for XdgToplevel {
|
|||
self.send_close();
|
||||
}
|
||||
|
||||
fn tl_set_visible(&self, visible: bool) {
|
||||
fn tl_set_visible_impl(&self, visible: bool) {
|
||||
// log::info!("set_visible {}", visible);
|
||||
// if !visible {
|
||||
// log::info!("\n{:?}", Backtrace::new());
|
||||
// }
|
||||
self.xdg.set_visible(visible);
|
||||
self.toplevel_data.set_visible(self, visible);
|
||||
if self.xdg.base.version >= SUSPENDED_SINCE {
|
||||
if visible {
|
||||
self.states.borrow_mut().remove(&STATE_SUSPENDED);
|
||||
|
|
@ -516,8 +513,7 @@ impl ToplevelNode for XdgToplevel {
|
|||
}
|
||||
}
|
||||
|
||||
fn tl_destroy(&self) {
|
||||
self.toplevel_data.destroy_node(self);
|
||||
fn tl_destroy_impl(&self) {
|
||||
self.xdg.destroy_node();
|
||||
}
|
||||
|
||||
|
|
@ -544,6 +540,10 @@ impl ToplevelNode for XdgToplevel {
|
|||
// }
|
||||
// }
|
||||
|
||||
fn tl_last_active_child(self: Rc<Self>) -> Rc<dyn ToplevelNode> {
|
||||
self
|
||||
}
|
||||
|
||||
fn tl_scanout_surface(&self) -> Option<Rc<WlSurface>> {
|
||||
Some(self.xdg.surface.clone())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue