I didn't properly update it for the Smithay refactor. It was reading
initial_configure_sent too early. This worked before when niri had to reset it
manually, but it no longer works now that it is automatically reset already
before entering this function.
This can happen if a surface unmaps by committing a null buffer and then
immediately does the initial commit without a sync roundtrip, while there are
pending configures from the compositor in-flight. In this case, the surface
cannot tell that the pending configures were meant for "before unmapping" and
considers them to be the new initial configure.
From our point of view, we don't get to do a proper initial configuration
sequence in this case, and receive a mapping commit without our initial
configure state. We cannot really do much about it, but it is not an error when
this specific situation happens.
This turned out to require quite a few changes.
We keep track of the tile resize animation progress separately now, in order to
provide a resizing black fullscreen backdrop for non-resizable windows.
The window is always rendered in the middle of the tile, which once again aids
with the resizing black fullscreen backdrop.
The backdrop itself will fade in from transparency so that it's less jarring.
The resize animation now keeps track of the fullscreen progress to deal with
the case where an unfullscreen resize is interrupted by another non-fullscreen
resize. In this case, the fullscreen progress continues animating to avoid
sudden disappearance of the fullscreen backdrop.
Some things like border visibility switch to this fullscreen progress once again
to avoid jarring appearance/disappearance.
The border radius animates in accordance with the fullscreen progress to match
the visuals.
We already did that for Tiles, but for Columns we only tracked what was
effectively pending fullscreen. We used it in several places where the current
fullscreen should've been used instead, like the tile origin or the view offset.
This commit splits the two and makes every place use the right one.
Fixes things like tiles briefly appearing at y=0 between issuing the fullscreen
command and the tile committing in response to the fullscreen configure.
* Add corner selection in config
* Add hot corner docs
* Working per-monitor hot corners
Handle defaults
* run cargo fmt --all
* Fix hot corners in is_sticky_obscured_under
* Change default to fall back to gesture hot corners if output hot corners are unset
* Add hot corner output config docs
* Support fractional scaling
* Trigger hot corners over widgets
* Improve float handling
Fixed YaLTeR/niri/pull/2108
* Refactor
* Bug Fixes
* Amend docs
Fix styling
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
* Integrate code review
Move is_inside_hot_corner
* fixes
---------
Co-authored-by: Aadniz <8147434+Aadniz@users.noreply.github.com>
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
* Included example for media keys: play/pause, stop, previous and next in the default config
* Update resources/default-config.kdl
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
* wiki/Xwayland: Added a mention of Native Wayland for gaming compatibility
* Update docs/wiki/Xwayland.md
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>