Age | Commit message (Collapse) | Author |
|
Commit d3d7956576341bbbfb60d045175b0e8a44752e0b removed this NULL check, which
leads to the following backtrace:
#0 0x0000557bd201df46 in node_is_view (node=0x0) at ../sway/sway/tree/node.c:41
#1 0x0000557bd1ff5d4e in seat_get_focus_inactive (seat=0x557bd3fc7580, node=0x0) at ../sway/sway/input/seat.c:968
current = 0x557bd2033485
#2 0x0000557bd2009f24 in cmd_move_container (argc=3, argv=0x557bd46b19c0) at ../sway/sway/commands/move.c:557
new_output_last_focus = 0x0
error = 0x0
node = 0x557bd469f360
workspace = 0x557bd4572ee0
container = 0x557bd469f360
no_auto_back_and_forth = false
seat = 0x557bd3fc7580
old_parent = 0x0
old_ws = 0x557bd4572ee0
old_output = 0x557bd411f740
destination = 0x557bd46a0cc0
new_output = 0x557bd411f740
new_output_last_ws = 0x0
focus = 0x557bd469f360
__PRETTY_FUNCTION__ = "cmd_move_container"
new_workspace = 0x557bd4572ee0
[…]
Reintroduce the NULL check to fix the bug.
Fixes #3746
|
|
This modifies the places where output_get_active_workspace is called to
handle a NULL result. Some places already handled it and did not need a
change, some just have guard off code blocks, others return errors, and
some have sway_asserts since the case should never happen. A lot of this
is probably just safety precautions since they probably will never be
called when `output_get_active_workspace` is not fully configured with a
workspace.
|
|
output_get_active_workspace: check workspaces length
|
|
If an output's node was dirty and the transaction was committed before a
workspace was moved to or created for the output, the instruction would
have a bad value for `state->active_workspace` due to a missing
length check in `output_get_active_workspace`. If there was no focus on
the output, the first workspace was being returned. If the workspace
list was currently empty, the value was either garbage, or in the case of
an output being disabled and re-enabled, a workspace that may have been
previously freed. This just adds the length check to avoid returning out
of bounds value.
|
|
This calls `workspace_consider_destroy` on the workspace that was
visible on an output that a workspace was just evacuated to. This
prevents having hidden empty workspaces.
|
|
Add wp-primary-selection-unstable-v1
|
|
|
|
Add Polish README
|
|
|
|
Manually set the CLOEXEC flag instead, since SOCK_CLOEXEC isn't POSIX.
|
|
|
|
|
|
ci: add Alpine build
|
|
|
|
Fix drag icon map listener not removed
|
|
Feature: Add 'visible' key to view json response
|
|
|
|
|
|
seat_cmd_cursor: fix typo in expected syntax
|
|
Use container under cursor for mouse bindings
|
|
This matches i3's behavior of executing mouse bindings in regards to the
container under the cursor instead of what is focused.
|
|
This just fixes a typo in the expected syntax for seat_cmd_cursor
|
|
This changes `workspace_next_name` to use the next available number as
the workspace name instead of the number of outputs. This fixes the case
where a number that is already in use could be returned. The workspace
numbers in use have no relation to the number of outputs so it makes
more sense to use the lowest available number
|
|
This creates the next workspace if you hit the end.
|
|
Closes #3695
|
|
This is much more reliable. This also fixes race conditions when killing swaybg
while it's doing a wl_display_roundtrip.
|
|
|
|
This documents the wildcard character for both inputs and seats. There
is also a tip added on trying the wildcard to verify a setting if the
identifier does not appear to be working.
|
|
|
|
This fixes the issue of the display freezing on reload with
wlroots#1545.
On master, all output configs are applied on reload. This may cause an
output to have its config applied up to three times, instead of just
once. The three cases are: output name, output identifier, and wildcard.
Not only is this inefficient, but it can cause swaybg to be spawned and
immediately killed.
However, swaybg requires two roundtrips of wl_display (to obtain needed
globals) before it enters its normal event loop. Modesetting will
roundtrip the wl_display. Without modesetting, waitpid for killing
swaybg could block infinitely due to swaybg being blocked by
wl_display_roundtrip.
This only configured an output once. It either uses the wildcard config
or creates an empty wildcard config and applies that. This also fixes a
bug where an output would not be reset when there is no output config to
apply to it.
|
|
Disable unneeded wlroots subproject features
|
|
|
|
Before, only the first matching item would be removed, which could leave
stale items.
|
|
This fixes issues of clients at the edge of the screen, like swaybar,
ignoring buttons.
|
|
|
|
Spanish translation of the README
|
|
|
|
|
|
|
|
Fix crash and memory leak on bar termination
|
|
Counter-intuitively, `sd_bus_slot_set_floating` expects 0 to set it to
floating.
|
|
This prevents a heap-use-after-free crash when sway terminates.
|
|
On the DRM backend, if an output is dpms'd off and a different output is
hotplugged, the CRTC for the output is reclaimed. When modesetting an
output without a CRTC, a CRTC will not be given to an output that is not
desired to be enabled. This splits setting the dpms state in
apply_output_config. If the output should be dpms on, the it is enabled
before attempting to modeset. Otherwise, it is dpms'd off after setting
everything else.
This also adds DPMS_ON to the default output configs.
|
|
In seatop_move_tiling, it is possible to cause a stack overflow by
dragging a container into one of its descendants. This disables the
ability to move into a descendant.
|
|
This allows the focused inactive tree node and visible workspaces to be
changed while a surface layer has focus. The layer temporarily loses
focus, the tree focus changes, and the layer gets refocused.
|
|
seatop_move_tiling: use tab/stack parent not self
|
|
When moving a descendant of a tabbed or stacked container, it is possible
for the target node to be the node being moved. This causes a segfault in
`handle_finish` since the node will be detached and then attempted to be
attached to it own parent, which is NULL due to the detach. In this
case, the target node should not be set to the node being moved, but the
parent of the node. This also allows for a descendant of a tabbed or
stacked container to be dragged out of the tabs/stacks and to be a
sibling of the tabbbed/stacked container, which was not previously
possible.
|
|
It is possible for `wlr_surface_is_subsurface` to return true, but
`wlr_surface_from_wlr_surface` to be NULL. This adds a NULL check to the
value returned by `wlr_surface_from_wlr_surface` and breaks out of the
while loop in `subsurface_get_root_coords`.
|
|
In handle_cursor_motion, the timestamp passed to
`wlr_relative_pointer_manager_v1_send_relative_motion` should be
microseconds (not milliseconds) according to relative-pointer-v1 spec.
|
|
on move container window to another workspace,
not remove from scratchpad.
|