1
0
Fork 0
forked from wry/wry

autocommit 2022-04-15 20:23:03 CEST

This commit is contained in:
Julian Orth 2022-04-15 20:23:03 +02:00
parent 5f13954dbc
commit fdf0ab7388
17 changed files with 159 additions and 87 deletions

View file

@ -102,11 +102,12 @@ impl WlBuffer {
match &self.storage {
WlBufferStorage::Shm { mem, stride } => {
self.texture.set(None);
let ctx = self.client.state.render_ctx.get().unwrap();
let tex = mem.access(|mem| {
ctx.shmem_texture(mem, self.format, self.width, self.height, *stride)
})??;
self.texture.set(Some(tex));
if let Some(ctx) = self.client.state.render_ctx.get() {
let tex = mem.access(|mem| {
ctx.shmem_texture(mem, self.format, self.width, self.height, *stride)
})??;
self.texture.set(Some(tex));
}
}
WlBufferStorage::Dmabuf(img) => {
if self.texture.get().is_none() {

View file

@ -92,6 +92,7 @@ impl NodeSeatState {
while let Some((_, seat)) = self.kb_foci.pop() {
seat.ungrab_kb();
seat.keyboard_node.set(seat.state.root.clone());
log::info!("keyboard_node = root");
if focus_last {
if let Some(tl) = seat.toplevel_focus_history.last() {
seat.focus_node(tl.focus_surface(seat.id));

View file

@ -57,6 +57,7 @@ impl KbOwner for DefaultKbOwner {
if old.node_id() == node.node_id() {
return;
}
log::info!("unfocus {}", old.node_id());
old.node_unfocus(seat);
if old.node_seat_state().unfocus(seat) {
old.node_active_changed(false);
@ -65,6 +66,7 @@ impl KbOwner for DefaultKbOwner {
if node.node_seat_state().focus(seat) {
node.node_active_changed(true);
}
log::info!("focus {}", node.node_id());
node.clone().node_focus(seat);
seat.keyboard_node.set(node.clone());
}

View file

@ -92,6 +92,7 @@ pub struct XwindowInfo {
pub has_alpha: Cell<bool>,
pub override_redirect: Cell<bool>,
pub extents: Cell<Rect>,
pub pending_extents: Cell<Rect>,
pub instance: RefCell<Option<BString>>,
pub class: RefCell<Option<BString>>,
pub title: RefCell<Option<String>>,
@ -153,6 +154,7 @@ impl XwindowData {
event.height as _,
)
.unwrap();
// log::info!("xwin {} new {:?} or {}", event.window, extents, event.override_redirect);
Self {
state: state.clone(),
window_id: event.window,
@ -161,7 +163,7 @@ impl XwindowData {
window: Default::default(),
info: XwindowInfo {
override_redirect: Cell::new(event.override_redirect != 0),
extents: Cell::new(extents),
pending_extents: Cell::new(extents),
..Default::default()
},
children: Default::default(),
@ -275,15 +277,19 @@ impl Xwindow {
let map_change = self.map_change();
match map_change {
Change::None => return,
Change::Unmap => self.node_destroy(true),
Change::Unmap => {
self.data.info.pending_extents.set(self.data.info.extents.take());
self.node_destroy(true);
},
Change::Map if self.data.info.override_redirect.get() => {
self.change_extents(&self.data.info.pending_extents.get());
*self.display_link.borrow_mut() =
Some(self.data.state.root.stacked.add_last(self.clone()));
self.data.state.tree_changed();
}
Change::Map if self.data.info.wants_floating.get() => {
let ws = self.data.state.float_map_ws();
let ext = self.data.info.extents.get();
let ext = self.data.info.pending_extents.get();
self.data
.state
.map_floating(self.clone(), ext.width(), ext.height(), &ws);
@ -414,6 +420,7 @@ impl SizedNode for Xwindow {
}
fn change_extents(self: &Rc<Self>, rect: &Rect) {
// log::info!("xwin {} change_extents {:?}", self.data.window_id, rect);
let old = self.data.info.extents.replace(*rect);
if old != *rect {
if !self.data.info.override_redirect.get() {