Merge master#3
Merged
Merged
Conversation
This simplifies the match for anchors, and should correct the behavior for things like anchoring all edges. I believe previously the `x == Anchor::all()` case would never be reached, since the `x.contains(Anchor::TOP) && x.contains(Anchor::BOTTOM)` condition would also be true. Also the behavior is wrong; the spec says to treat this like `ExclusiveZone::Neutral`. This should now behave as defined by the spec.
Use the exclusive edge provided by the request if present. Otherwise, fallback to the implied edge based on anchors.
Iterate over surfaces that have an exclusive zone first, then other surfaces. This allows a surface that doesn't have an exclusive zone to be moved or resized for a later surface that does have an exclusive zone. As is probably desired.
Send a pressure(0) event before sending the pen up event in both tip_up() and proximity_out() handlers. This improves compatibility with applications like Wine and MyPaint that expect the pressure to be explicitly set to zero before a pen up event. While the tablet-v2 protocol does not strictly require this, major compositors like GNOME and Sway send this event for compatibility. Without it, some applications continue drawing strokes even after the pen is lifted. Fixes compatibility issues reported in: - https://bugs.winehq.org/show_bug.cgi?id=58463 - niri-wm/niri#2722 - niri-wm/niri#2576
Fixes crashes with clients like `lxqt-panel`. The validation here should now match the version in https://invent.kde.org/plasma/kwin/-/blob/master/src/wayland/layershell_v1.cpp.
Smithay#1482 renamed `set_minimized()` to `set_suspended()`, but didn't rename `is_minimized()`. But the name may not be ideal either. https://specifications.freedesktop.org/wm-spec/latest/ar01s05.html says > _NET_WM_STATE_HIDDEN should be set by the Window Manager to indicate > that a window would not be visible on the screen if its > desktop/viewport were active and its coordinates were within the > screen bounds. The canonical example is that minimized windows should > be in the _NET_WM_STATE_HIDDEN state. Pagers and similar applications > should use _NET_WM_STATE_HIDDEN instead of WM_STATE to decide whether > to display a window in miniature representations of the windows on a > desktop. While https://wayland.app/protocols/xdg-shell#xdg_toplevel:enum:state:entry:suspended says: > The surface is currently not ordinarily being repainted; for example > because its content is occluded by another window, or its outputs are > switched off due to screen locking. So `_NET_WM_STATE_HIDDEN` shouldn't be set merely because a window is occluded, or on a different workspace? Both definitions could perhaps be a bit more precise. It seems to me `_NET_WM_STATE_HIDDEN` is broader than "minimized", but more specific than the xdg-shell "suspended" state. So just call it "hidden" instead of using some other name.
I guess X11 clients use this essentially the same way `xdg-activation-v1` is used by native Wayland clients. A new method of `XwmHandler` is invoked so the compositor can handle the message. In addition to the `window`, the client takes three 32-bit values in `data`. This ignores the "source indication" for now, since we also seem to ignore that for the `_NET_WM_MOVERESIZE` and `NET_WM_STATE` client messages. If we want to take that into account, we can define an enum and add it to all applicable trait methods.
Some clients (like Chromium) filter potential dnd-targets by more than the `XdndAware` property. E.g. chromium tries to filter out utility windows by checking for WM_NAME. So lets set that.
Given that we push/remove things, the order doesn't really matter at this point, so use function that is O(1) instead of O(n).
The enter/leave events were not sent for all the text_input objects created by the client, while it should have been. Fixes Smithay#1884.
This allows X11 windows to be removed when `Xwayland` crashes. `cosmic-comp` was previously updated to do this in pop-os/cosmic-comp#823.
`SyncSender` isn't properly sending `Closed`: Smithay/calloop#236 In any case, using `Sender` seems appropriate if we don't need it to be `Sync`.
Previously the standalone method checked `strong_count()`, but the `IsAlive` implementation didn't. Presumably they should match. (And if not, we should avoid duplicated method names and signatures with a different behavior.)
This fix the problem that all virtual keyboard share the same keymap.
The Dispatch<XdgPopup, ...> impl for XdgShellState required a SeatHandler trait bound. This bound is not required and unnecessarily ties together the seat and xdg shell modules.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.