autocommit 2022-03-27 01:36:44 CET
This commit is contained in:
parent
86eb70ac3c
commit
9630354245
2 changed files with 18 additions and 5 deletions
|
|
@ -18,6 +18,7 @@ use crate::{AsyncQueue, CloneCell, State};
|
||||||
use bstr::BString;
|
use bstr::BString;
|
||||||
use jay_config::Direction;
|
use jay_config::Direction;
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
|
use std::ops::Deref;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
|
|
@ -83,7 +84,7 @@ pub struct XwindowInfo {
|
||||||
pub extents: Cell<Rect>,
|
pub extents: Cell<Rect>,
|
||||||
pub instance: RefCell<Option<BString>>,
|
pub instance: RefCell<Option<BString>>,
|
||||||
pub class: RefCell<Option<BString>>,
|
pub class: RefCell<Option<BString>>,
|
||||||
pub title: RefCell<Option<BString>>,
|
pub title: RefCell<Option<String>>,
|
||||||
pub role: RefCell<Option<BString>>,
|
pub role: RefCell<Option<BString>>,
|
||||||
pub protocols: CopyHashMap<u32, ()>,
|
pub protocols: CopyHashMap<u32, ()>,
|
||||||
pub window_types: CopyHashMap<u32, ()>,
|
pub window_types: CopyHashMap<u32, ()>,
|
||||||
|
|
@ -174,6 +175,15 @@ impl XwindowData {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn title_changed(&self) {
|
||||||
|
let title = self.info.title.borrow_mut();
|
||||||
|
if let Some(w) = self.window.get() {
|
||||||
|
if let Some(p) = w.parent_node.get() {
|
||||||
|
p.child_title_changed(w.deref(), title.as_deref().unwrap_or(""));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum Change {
|
pub enum Change {
|
||||||
|
|
@ -265,9 +275,11 @@ impl Xwindow {
|
||||||
// todo
|
// todo
|
||||||
let ext = self.data.info.extents.get();
|
let ext = self.data.info.extents.get();
|
||||||
self.data.state.map_floating(self.clone(), ext.width(), ext.height(), &ws);
|
self.data.state.map_floating(self.clone(), ext.width(), ext.height(), &ws);
|
||||||
|
self.data.title_changed();
|
||||||
},
|
},
|
||||||
Change::Map => {
|
Change::Map => {
|
||||||
self.data.state.map_tiled(self.clone())
|
self.data.state.map_tiled(self.clone());
|
||||||
|
self.data.title_changed();
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -303,6 +315,7 @@ impl Node for Xwindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn destroy_node(&self, _detach: bool) {
|
fn destroy_node(&self, _detach: bool) {
|
||||||
|
self.toplevel_data.clear();
|
||||||
self.display_xlink.borrow_mut().take();
|
self.display_xlink.borrow_mut().take();
|
||||||
self.display_link.borrow_mut().take();
|
self.display_link.borrow_mut().take();
|
||||||
self.workspace.take();
|
self.workspace.take();
|
||||||
|
|
@ -312,7 +325,6 @@ impl Node for Xwindow {
|
||||||
}
|
}
|
||||||
self.surface.destroy_node(false);
|
self.surface.destroy_node(false);
|
||||||
self.seat_state.destroy_node(self);
|
self.seat_state.destroy_node(self);
|
||||||
self.toplevel_data.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn visit(self: Rc<Self>, visitor: &mut dyn NodeVisitor) {
|
fn visit(self: Rc<Self>, visitor: &mut dyn NodeVisitor) {
|
||||||
|
|
|
||||||
|
|
@ -205,7 +205,7 @@ impl Wm {
|
||||||
property: atoms._NET_WM_NAME,
|
property: atoms._NET_WM_NAME,
|
||||||
ty: atoms.UTF8_STRING,
|
ty: atoms.UTF8_STRING,
|
||||||
format: 8,
|
format: 8,
|
||||||
data: "wlroots wm".as_bytes(),
|
data: "jay wm".as_bytes(),
|
||||||
});
|
});
|
||||||
c.call(&ChangeProperty {
|
c.call(&ChangeProperty {
|
||||||
mode: PROP_MODE_REPLACE,
|
mode: PROP_MODE_REPLACE,
|
||||||
|
|
@ -571,7 +571,8 @@ impl Wm {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*data.info.title.borrow_mut() = Some(buf.into());
|
*data.info.title.borrow_mut() = Some(buf.as_bstr().to_string());
|
||||||
|
data.title_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn load_window_wm_name(&self, data: &Rc<XwindowData>) {
|
async fn load_window_wm_name(&self, data: &Rc<XwindowData>) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue