Toplevel parent fixes, checks, and callback #1609
Merged
+168
−50
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Several things here:
Add a self-parent and a parent loop check when setting a parent, corresponding to the protocol:
Fix inverted logic in xdg-foreign, tested with xdg-desktop-portal-gnome dialogs.
Expose an
XdgShellHandler::parent_changed()
callback so compositors can react to parent changes.The primary use is to restack surfaces as the protocol intends:
Another use is to signal parent changes to wlr-foreign-toplevel-management.
This makes xdg-foreign depend on
XdgShellHandler
. Not sure if it's doable otherwise; realistically it's required because there's no other toplevel-equivalent yet.Remove
ToplevelSurface::set_parent()
. This was used back in zxdg-shell days, not any more. Anyhow, exposing this publicly seems a bit strange because it can cause client protocol errors down the line from compositor actions.