autocommit 2022-04-15 20:23:03 CEST
This commit is contained in:
parent
5f13954dbc
commit
fdf0ab7388
17 changed files with 159 additions and 87 deletions
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue