autocommit 2022-04-20 16:11:37 CEST
This commit is contained in:
parent
fa1ec0b36c
commit
ab3c2e44f4
19 changed files with 409 additions and 210 deletions
|
|
@ -1,12 +1,30 @@
|
|||
use {
|
||||
crate::{
|
||||
ifs::{wl_seat::SeatId, wl_surface::WlSurface},
|
||||
tree::{Node, WorkspaceNode},
|
||||
tree::{Node, SizedNode, WorkspaceNode},
|
||||
utils::{numcell::NumCell, smallmap::SmallMap},
|
||||
},
|
||||
std::{cell::Cell, rc::Rc},
|
||||
};
|
||||
|
||||
pub trait SizedToplevelNode: SizedNode {
|
||||
fn data(&self) -> &ToplevelData;
|
||||
fn accepts_keyboard_focus(&self) -> bool;
|
||||
fn default_surface(&self) -> Option<Rc<WlSurface>>;
|
||||
fn set_active(&self, active: bool);
|
||||
fn activate(&self);
|
||||
fn set_fullscreen(self: &Rc<Self>, fullscreen: bool);
|
||||
fn fullscreen(&self) -> bool;
|
||||
|
||||
fn as_node(&self) -> &dyn Node {
|
||||
self
|
||||
}
|
||||
|
||||
fn into_node(self: Rc<Self>) -> Rc<dyn Node> {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
tree_id!(ToplevelNodeId);
|
||||
pub trait ToplevelNode {
|
||||
fn data(&self) -> &ToplevelData;
|
||||
|
|
@ -16,6 +34,46 @@ pub trait ToplevelNode {
|
|||
fn default_surface(&self) -> Option<Rc<WlSurface>>;
|
||||
fn set_active(&self, active: bool);
|
||||
fn activate(&self);
|
||||
fn set_fullscreen(self: Rc<Self>, fullscreen: bool);
|
||||
fn fullscreen(&self) -> bool;
|
||||
}
|
||||
|
||||
impl<T: SizedToplevelNode> ToplevelNode for T {
|
||||
fn data(&self) -> &ToplevelData {
|
||||
<Self as SizedToplevelNode>::data(self)
|
||||
}
|
||||
|
||||
fn as_node(&self) -> &dyn Node {
|
||||
<Self as SizedToplevelNode>::as_node(self)
|
||||
}
|
||||
|
||||
fn into_node(self: Rc<Self>) -> Rc<dyn Node> {
|
||||
<Self as SizedToplevelNode>::into_node(self)
|
||||
}
|
||||
|
||||
fn accepts_keyboard_focus(&self) -> bool {
|
||||
<Self as SizedToplevelNode>::accepts_keyboard_focus(self)
|
||||
}
|
||||
|
||||
fn default_surface(&self) -> Option<Rc<WlSurface>> {
|
||||
<Self as SizedToplevelNode>::default_surface(self)
|
||||
}
|
||||
|
||||
fn set_active(&self, active: bool) {
|
||||
<Self as SizedToplevelNode>::set_active(self, active)
|
||||
}
|
||||
|
||||
fn activate(&self) {
|
||||
<Self as SizedToplevelNode>::activate(self)
|
||||
}
|
||||
|
||||
fn set_fullscreen(self: Rc<Self>, fullscreen: bool) {
|
||||
<Self as SizedToplevelNode>::set_fullscreen(&self, fullscreen)
|
||||
}
|
||||
|
||||
fn fullscreen(&self) -> bool {
|
||||
<Self as SizedToplevelNode>::fullscreen(self)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue