| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Pending state is currently inlined directly in the container struct,
while the current state is in a state struct. A side-effect of this is
that it is not immediately obvious that pending double-buffered state is
accessed, nor is it obvious what state is double-buffered.
Instead, use the state struct for both current and pending.
|
|
|
|
|
|
|
|
|
| |
Every seat_set_focus* should be followed by a transaction_commit_dirty.
In cases where the focus change is followed by a seatop_begin* this is
not needed, as transaction_commit_dirty is then called by the
seatop_begin* function.
Fixes #6034
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The transaction system contains a necessary optimization where a popped
transaction is combined with later, similar transactions. This breaks
the chronological order of states, and can lead to desynchronized
geometries.
To fix this, we replace the queue with only 2 transactions: current and
pending. If a pending transaction exists, it is updated with new state
instead of creating additional transactions.
As we never have more than a single waiting transaction, we no longer
need the queue optimization that is causing problems.
Closes: https://github.com/swaywm/sway/issues/6012
|
|
|
|
|
|
|
|
|
|
| |
Try to better mimic JSON node structure produced by i3 which might be
relied on by already existing tools. In particular having "type" right
after "id" is quite handy for streaming high-performance JSON parsers
such as simdjson (which are handy for maintaining responsiveness on
resource constrained systems).
refer https://github.com/i3/i3/blob/ab2a22a78b25ad12fed2c177a34c44950795cf33/src/ipc.c#L338
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Transactions currently wait for all configures to be acked, regardless
fo what they were sent to. This includes views that are hidden in tabbed
or stacked containers. If these views do not ack the configure in
response to a single frame callback, they can cause transaction
timeouts.
Check if a container is hidden before registering the configure serial
and saving any view buffers.
Closes: https://github.com/swaywm/sway/issues/6023
|
| |
|
|
|
|
|
|
|
| |
Before this commit, there would be cases where focus changes from one
window to another, the new window activates text_input, then the old
window sends a deactivate request, making text_input unfocused
completely.
|
|
|
|
|
| |
This is needed for focus_follows_mouse, and was accidentally omitted in
the previous transaction commit shuffle.
|
|
|
|
|
|
|
|
|
|
|
| |
There is no need to check for transactions at the end of every user
input, as the vast majority of input will not issue transactions. This
implementation can also hide where changes are made without an
appropriate transaction commit, as a future unrelated input would issue
the commit instead.
Instead, commit transactions in places where changes are made or are
likely to be made.
|
|
|
|
| |
Update to latest English README and improve wording.
|
| |
|
|
|
|
|
|
| |
xdg_shell and xwayland handled geometry changes differently despite
needing mostly identical behavior. The xwayland implementation has been
changed to match that of xdg_shell.
|
|
|
|
|
|
|
| |
The size of a tiled container cannot change in response to new buffer
sizes, so there is no need to commit a new transaction. Instead, simply
recenter the view with the new geometry, leaving the full transaction
flow for floating containers.
|
|
|
|
| |
This will allow us to reuse it for centering elsewhere.
|
|
|
|
|
|
|
|
|
| |
We need to use surface_x and surface_y when rendering and damaging saved
buffers as these compensate for views that have been centered due to
being smaller than their container.
Add them to the surface positions on the saved buffer so we have the
values from the time the buffer was saved.
|
|
|
|
|
|
|
|
|
|
| |
Only wl_pointer.motion was used to update pointer position, which would
cause issues if the pointer was not moved prior to wl_pointer.button.
This also fixes touch input through wl_pointer emulation, which fires
wl_pointer.button immediately after wl_pointer.enter.
Closes: https://github.com/swaywm/sway/issues/5991
|
| |
|
| |
|
|
|
|
| |
And make the functions handling these arrays use const types.
|
|
|
|
| |
Co-authored-by: Jason Francis <cycl0ps@tuta.io>
|
|
|
|
|
|
|
| |
Sway records pid, workspace, and output for every new process. However, if the
output gets disabled and the workspace disappears, the workspace is still
re-created on the disabled output. This commit adds a check for the enabled
flag, so that NULL will be passed to workspace_create() in this case.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
wlr_output_configuration_head_v1_create normally fills out the head
"enabled" field to match the wlr_output state. We overwrite this to also
set the head as enabled if it is only turned off with DPMS.
However, in some cases we may not have a mode for this display, in which
case setting it as enabled will lead to a segfault later on. Therefore,
enabled conditional on the presence of a mode.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
For certain applications (e.g. JetBrains) the parent window controls
input. We need to adhere to the ICCCM input focus specification to
properly handle these cases.
Relates to swaywm/wlroots#2604
|
|
|
|
|
| |
This happens when Sway is not installed on the system, so there's no
default config in /etc.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The fractional part of the real number we want to represent never has
more than 3 decimal digits, so use 3 decimal digits of precision.
e.g. 'swaymsg -t get_outputs' would show a refresh rate of 59934 mHz
as 59.933998 Hz, now correctly as 59.934 Hz.
|
|
|
|
|
| |
This is taken from wlr-protocols commit d1598e82240d ("layer-shell: add
keyboard_interactivity.on_demand").
|
|
|
|
| |
Swap the "surface" part for consistency with wlroots' naming.
|
|
|
|
|
|
|
|
| |
Instead of calling wlr_xdg_surface_for_each_popup and then
wlr_surface_for_each_surface, use the new for_each_popup_surface helper
introduced in [1] that does it in one go.
[1]: https://github.com/swaywm/wlroots/pull/2609
|
|
|
|
| |
Fallback to focused_statusline instead of statusline on focused output
|
|
|
|
| |
This ensures we don't swap two atoms by mistake.
|
|
|
|
|
| |
Also remove the AUTHORS section from swaybar-protocol(7), for
consistency with the rest of the man pages.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
i3 feature set is mostly frozen as well, so we shouldn't advise people
to open feature requests there. Moreover, i3 will disregard feature
requests from sway users (because it doesn't benefit the i3 project
itself).
There is now no good way to request new WM features, and this is by
design. This aligns with [1].
[1]: https://github.com/swaywm/sway/commit/fc1148da7f9c7bfc81f29e2b8304ae4e1592d95d
|
| |
|
| |
|
|
|
|
| |
This fixes a dangling reference which causes a use-after-free.
|
|
|
|
| |
This fixes use-after-free when seat_destroy() has been called.
|
|
|
|
|
| |
This fixes a crash that happens when input_method_new or text_method_new
events are emitted after the seat has been freed.
|
|
|
|
|
|
| |
It's removed upstream [1].
[1]: https://github.com/swaywm/wlroots/pull/2561
|