track if a popup has been committed
@@ -383,6 +383,14 @@ xdg_role!(
/// It is a protocol error to call commit on a wl_surface with
/// the xdg_popup role when no parent is set.
pub parent: Option<wl_surface::WlSurface>,
+
+ /// Defines if the surface has received at least one commit
+ ///
+ /// This can be used to check for protocol errors, like
+ /// checking if a popup requested a grab after it has been
+ /// mapped.
+ pub committed: bool,
+
popup_handle: Option<xdg_popup::XdgPopup>
}
);
@@ -1399,6 +1407,7 @@ impl PopupSurface {
.unwrap()
.lock()
.unwrap();
+ attributes.committed = true;
if attributes.initial_configure_sent {
if let Some(state) = attributes.last_acked {
if state != attributes.current {
