linebender / linebender/druid

wayland: xdg-shell implementation issues

Open
#2,199 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
9.7k
Forks
565
PR merge metrics
No merged PRs in 30d

Description

`xdg_toplevel` and `xdg_popup`'s configure event should not notify the handler the dimensions of the window changed.

(https://github.com/linebender/druid/blob/master/druid-shell/src/backend/wayland/surfaces/toplevel.rs#L90)
(https://github.com/linebender/druid/blob/master/druid-shell/src/backend/wayland/surfaces/popup.rs#L143)

The xdg-shell protocol is clear that the state must be collected and not acted upon until the `xdg_surface::configure` event is handled. This means wait until xdg_surface's configure to tell the handler the dimensions of the window changed.

For toplevels:
> This configure event asks the client to resize its toplevel surface or to change its state. The configured state should not be applied immediately. See xdg_surface.configure for details.

For popups:
> This event asks the popup surface to configure itself given the configuration. The configured state should not be applied immediately. See xdg_surface.configure for details.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with druid-shell/src/backend/wayland/surfaces/toplevel.rs around line 90 and popup.rs around line 143. Trace how the xdg_toplevel and xdg_popup configure events relate to xdg_surface::configure. Done means the handler is notified of changed dimensions only when the xdg_surface configure event is handled, for both surfaces.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.