config: add toplevel-tag window criteria
This commit is contained in:
parent
5f1268cada
commit
6d3d4dcabb
15 changed files with 106 additions and 8 deletions
|
|
@ -92,6 +92,11 @@ pub enum Decoration {
|
|||
Server,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct XdgToplevelToplevelData {
|
||||
pub tag: RefCell<String>,
|
||||
}
|
||||
|
||||
pub struct XdgToplevel {
|
||||
pub id: XdgToplevelId,
|
||||
pub state: Rc<State>,
|
||||
|
|
@ -112,6 +117,7 @@ pub struct XdgToplevel {
|
|||
is_mapped: Cell<bool>,
|
||||
dialog: CloneCell<Option<Rc<XdgDialogV1>>>,
|
||||
extents_set: Cell<bool>,
|
||||
pub data: Rc<XdgToplevelToplevelData>,
|
||||
}
|
||||
|
||||
impl Debug for XdgToplevel {
|
||||
|
|
@ -135,6 +141,9 @@ impl XdgToplevel {
|
|||
}
|
||||
let state = &surface.surface.client.state;
|
||||
let node_id = state.node_ids.next();
|
||||
let data = Rc::new(XdgToplevelToplevelData {
|
||||
tag: Default::default(),
|
||||
});
|
||||
Self {
|
||||
id,
|
||||
state: state.clone(),
|
||||
|
|
@ -154,7 +163,7 @@ impl XdgToplevel {
|
|||
state,
|
||||
String::new(),
|
||||
Some(surface.surface.client.clone()),
|
||||
ToplevelType::XdgToplevel,
|
||||
ToplevelType::XdgToplevel(data.clone()),
|
||||
node_id,
|
||||
slf,
|
||||
),
|
||||
|
|
@ -162,6 +171,7 @@ impl XdgToplevel {
|
|||
is_mapped: Cell::new(false),
|
||||
dialog: Default::default(),
|
||||
extents_set: Cell::new(false),
|
||||
data,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
use {
|
||||
crate::{
|
||||
client::{Client, ClientError},
|
||||
criteria::tlm::TL_CHANGED_TAG,
|
||||
globals::{Global, GlobalName},
|
||||
leaks::Tracker,
|
||||
object::{Object, Version},
|
||||
tree::ToplevelNodeBase,
|
||||
wire::{XdgToplevelTagManagerV1Id, xdg_toplevel_tag_manager_v1::*},
|
||||
},
|
||||
std::rc::Rc,
|
||||
|
|
@ -72,9 +74,17 @@ impl XdgToplevelTagManagerV1RequestHandler for XdgToplevelTagManagerV1 {
|
|||
|
||||
fn set_toplevel_tag(
|
||||
&self,
|
||||
_req: SetToplevelTag<'_>,
|
||||
req: SetToplevelTag<'_>,
|
||||
_slf: &Rc<Self>,
|
||||
) -> Result<(), Self::Error> {
|
||||
let tl = self.client.lookup(req.toplevel)?;
|
||||
let tag = &mut *tl.data.tag.borrow_mut();
|
||||
if tag == req.tag {
|
||||
return Ok(());
|
||||
}
|
||||
tag.clear();
|
||||
tag.push_str(req.tag);
|
||||
tl.tl_data().property_changed(TL_CHANGED_TAG);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue