| Commit message (Collapse) | Author | Age |
... | |
|\
| |
| | |
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.
|
|\
| |
| | |
Rebase cursor when a layer surface maps
|
| |
| |
| |
| |
| |
| |
| | |
Also removes an extraneous arrange_outputs call, it's already called if
necessary in arrange_layers.
Updates https://github.com/swaywm/sway/issues/3080
|
|\ \
| |/
|/| |
Fix --version when building from tarball
|
|/ |
|
|
|
|
|
|
|
| |
When a layer surface is focused, `seat_get_focused_workspace` will be
NULL. This changes `workspace_get_initial_output` to use output of the
focus inactive. If the focus inactive is also NULL, then either the
first output or the noop output will be used as fallbacks.
|
|
|
|
|
|
| |
This aborts sway and displays an error message about XDG_RUNTIME_DIR
not being set without initializing the wl_display or logging any other
information.
|
|
|
|
|
|
|
|
|
| |
This fixes a few misc memory leaks reported by asan:
- Items of `config->config_chain` are now freed instead of just the list
itself
- `bar->swaybar_command` is now freed
- The result returned by a seat subcommand is now returned instead of
leaked
|
|
|
|
|
|
| |
If the active xkb_layout does not have a name, use `NULL` instead of
`json_object_new_string(NULL)`. This also makes it so swaymsg will pretty
print this as `(unnamed)`.
|
|
|
|
|
|
| |
If the view has any pointer constraints, ensure they are removed
before the view is unmapped and the surface is no longer tied to the
view.
|
|
|
|
|
|
| |
If `repeat_rate` or `repeat_delay` is set without the other being set,
the default was being used for both. This changes the logic to respect
the value given and use the default for the other when only one is set.
|
|
|
|
|
|
|
|
|
| |
If the bar was set to "invisible" and subsequently "toggle" was send twice, the
new mode was never set and the bar->mode was double freed.
Fix this by not requiring the bar->mode to be "hide" and instead show it
unconditionally, because it was either hidden or invisible.
Fixes #3637
|
|
|
|
|
|
|
|
|
|
|
| |
It is possible to make the title bars have a zero pixel height while
stacked, by using a blank font and no padding. This causes a division by
zero when attempting to calculate the child index in
container_at_stacked, which then results in a segfault when attempting
to access the child at that bad index (INT_MIN). This just skips the
check to see if the cursor is over a title bar of a child of a stacked
container when the title bar height is zero since there will be no title
bars.
|
|
|
|
|
|
|
|
| |
sway-bar(5) documents `modifier none`, which comes from i3. This
implements the functionality for `modifier none` since it was not
previously implemented. The bar modifier toggles visibility of the bar
when the bar mode is set to hide. When the bar modifier is set to
`none`, the ability to toggle visibility of the bar will be disabled.
|
|\
| |
| | |
Revert "Return false if config could not be loaded."
|
| |
| |
| |
| | |
This reverts commit 855368b67e8b7d0b1dd035bde7f9119d37b35e5d.
|
|/
|
|
| |
This reverts commit 921e42c6c06212a61d899d6335d95eb4c781e2e8.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since a tablet tool provides the WL_SEAT_CAPABILITY_POINTER capability,
sway will attempt to use the xcursor manager to set a cursor image. If
the tablet tool was the first (and possibly only) device to provide the
capability for the seat, the xcursor manager was not being configured
before attempting to set a cursor image. This was due to
`seat_configure_xcursor` only being called in `seat_configure_pointer`.
Since the xcursor manager was NULL in this case, it would cause a
segfault when attempting to set a cursor image. This adds a call to
`seat_configure_xcursor` in `seat_configure_tablet_tool` to ensure that
the seat has a xcursor manager.
|
|
|
|
|
|
|
|
|
|
|
| |
Since `load_include_config` compares against the realpath of a config
file when checking if a config has already been added, the main config's
realpath has to be added to the config_chain.
However, includes from the main config should be processed relative to
the path given to allow for symbolic links. This stores the realpath in
`config->config_chain`, but uses the given path for all other
operations.
|
|
|
|
|
|
|
|
|
|
|
|
| |
When both options and positional arguments are given, sway would print
the error `Don't use options with the IPC client`. Over the past
several months, it seems like users are including this error message in
issues instead of a debug log due to not understanding that the error
message means there is an issue with their command.
This makes the error message more verbose and will hopefully make it so
more users understand that the message is not a bug in sway, but with
the command used.
|
| |
|
| |
|
|\
| |
| |
| |
| | |
dnkl/fix-inverted-bitmask-check-in-ipc-has-event-listeners
ipc_has_event_listeners: fix inverted check of subscribed_events
|
|/
|
|
|
| |
subscribed_events is a bit mask, with each *set* bit representing an
event the client has subscribed to.
|
|
|
|
|
|
| |
Since `load_include_config` compares against the realpath of a config
file when checking if a config has already been added, the main config's
realpath has to be added to the config_chain.
|
|
|
|
|
|
| |
wlr_xdg_popup_destroy will destroy popups, so we need to walk the tree
carefully. It's enough to just destroy all direct children, since destroying
the parent will also destroy all children.
|
|\
| |
| | |
output_cmd_background: fix no file + valid mode
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
If output_cmd_background is given a valid mode as the first argument,
then there is no file given and an error should be returned.
join_args should not be called with an argc of zero since it sets the
last character to the null terminator. With an argc of zero, the length
is zero causing a heap buffer overflow when setting the byte before the
start of argv to '\0'. This probably will not ever generate a segfault,
but may cause data corruption to whatever is directly before it in
memory. To make other such cases easier to detect, this also adds a
sway_assert in join_args when argc is zero.
|
|\
| |
| | |
Initialize server so input manager is available.
|
|/ |
|
|\
| |
| | |
If validating the config, do it as early as possible.
|
|/ |
|
|\
| |
| | |
cmd_workspace_gaps: fix double free on bad amount
|
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes a double free in cmd_workspace_gaps when the amount given is
invalid. The end pointer from strtol is part of the argument and should
not be freed. Freeing the end pointer could result in a double free or
bad free depending on whether or not the end pointer was at the start of
the argument
|
|\ \
| | |
| | | |
IPC_COMMAND: split on newline
|
| |/
| |
| |
| |
| | |
This splits commands given in IPC_COMMAND on newline to match i3's
behavior.
|
|\ \
| |/
|/| |
Set version in project file
|
|/
|
|
|
|
|
|
| |
Let's set the version in the meson file instead of declaring it outside.
In case git is installed we use the git hash as version. Instead it
isn't (like on a clean build system), let's use the version defined in
the project.
|
|
|
|
| |
Let's not use !strcmp(…) anymore.
|
|
|
|
|
|
|
| |
This removes quote stripping for `exec_always` in `execute_command`.
Since `exec_always` commands will be deferred in the config and
processed by `execute_command`, the quotes need to be left intact
like they are for `exec`.
|
|
|
|
|
| |
Now that swaynag uses getline (instead of the old readline), the
trailing newline characters have to be removed when reading the config
|
|
|
|
|
|
|
| |
This fixes the failure condition for the wordexp call in
load_include_configs. The only success value is zero. Since the error
codes are positive, having the check be less than zero was causing
segfaults on failure when accessing the words.
|
|\
| |
| |
| |
| | |
vilhalmer/focus_follows_mouse-workspace-last-inactive
Focus workspace inactive node with focus_follows_mouse
|
| | |
|
|\ \
| | |
| | | |
seat_cmd_cursor: do not create non-existing seat
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
If a seat does not exist in seat_cmd_cursor, do not create it. A seat
without any attachments is useless since it will have no capabilities.
This changes `input_manager_get_seat` to have an additional argument
that dictates whether or not to create the seat if it does not exist.
|