1
0
Fork 0
forked from wry/wry

Merge pull request #267 from mahkoh/jorth/xdg-toplevel-initial-commit

xdg_surface: send initial configure once after the initial commit
This commit is contained in:
mahkoh 2024-09-14 16:57:08 +02:00 committed by GitHub
commit 45374c1bdb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 10 deletions

View file

@ -177,6 +177,7 @@ impl WlSubsurface {
update_children_attach(self)?; update_children_attach(self)?;
let (x, y) = self.parent.buffer_abs_pos.get().position(); let (x, y) = self.parent.buffer_abs_pos.get().position();
self.surface.set_absolute_position(x, y); self.surface.set_absolute_position(x, y);
self.surface.set_output(&self.parent.output.get());
Ok(()) Ok(())
} }

View file

@ -75,6 +75,7 @@ pub struct XdgSurface {
popups: CopyHashMap<XdgPopupId, Rc<Popup>>, popups: CopyHashMap<XdgPopupId, Rc<Popup>>,
pub workspace: CloneCell<Option<Rc<WorkspaceNode>>>, pub workspace: CloneCell<Option<Rc<WorkspaceNode>>>,
pub tracker: Tracker<Self>, pub tracker: Tracker<Self>,
have_initial_commit: Cell<bool>,
} }
struct Popup { struct Popup {
@ -190,6 +191,7 @@ impl XdgSurface {
popups: Default::default(), popups: Default::default(),
workspace: Default::default(), workspace: Default::default(),
tracker: Default::default(), tracker: Default::default(),
have_initial_commit: Default::default(),
} }
} }
@ -489,16 +491,11 @@ impl SurfaceExt for XdgSurface {
self: Rc<Self>, self: Rc<Self>,
pending: &mut PendingState, pending: &mut PendingState,
) -> Result<(), WlSurfaceError> { ) -> Result<(), WlSurfaceError> {
{ if !self.have_initial_commit.get() {
let ase = self.acked_serial.get(); if let Some(ext) = self.ext.get() {
let rse = self.requested_serial.get(); ext.initial_configure()?;
if ase != Some(rse) { self.do_send_configure();
if ase.is_none() { self.have_initial_commit.set(true);
if let Some(ext) = self.ext.get() {
ext.initial_configure()?;
}
self.send_configure(rse);
}
} }
} }
if let Some(pending) = &mut pending.xdg_surface { if let Some(pending) = &mut pending.xdg_surface {