aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2020-06-08tree/view: fix smart gaps when ancestor container is tabbed or stackedTudor Brindus-11/+13
Fixes #5406.
2020-06-08input: tweak resize behavior to not change tab focus on border clickTudor Brindus-1/+10
If a resize is triggered on a tabbed or stacked container, change focus to the tab which already had inactive focus, rather than to the tab whose border was clicked -- otherwise, we'd change the active tab when the user probably just wanted to resize.
2020-06-09swaynag: allow specifying more buttons which execute and dismissGraham Christensen-1/+30
I don't love -z / -Z, but I figure this patch is far from being accepted for other reasons too.
2020-06-07input/tablet: allow moving tiling tablet v2 surfaces by pen inputTudor Brindus-7/+25
Closes #5293.
2020-06-07input/tablet: allow moving floating tablet v2 surfaces by pen inputTudor Brindus-15/+52
Refs #5293.
2020-06-07tree/container: introduce `container_toplevel_ancestor` helperTudor Brindus-17/+19
This allows us to not have to explicitly write the same while loop everywhere.
2020-06-06common/util: fix `get_current_time_msec` returning microsecondsTudor Brindus-13/+16
This commit makes `get_current_time_msec` correctly return milliseconds as opposed to microseconds. It also considers the value of `tv_sec`, so we don't lose occasionally go back in time by one second. Finally, the function is moved into `util.c` so that it can be reused elsewhere without having to consider these pitfalls.
2020-06-06Add wayland_client dependency to commonTheAvidDev-1/+2
2020-06-05Use new wlroots API for clearing keyboard/pointer focus during grabsThomas Hebb-13/+11
We are not allowed to do what we did in #5222 and pass a `NULL` surface wlr_seat_pointer_notify_enter(), and it's causing crashes when an xdg-shell popup is active (see #5294 and swaywm/wlroots#2161). Instead, solve #5220 using the new wlroots API introduced in swaywm/wlroots#2217.
2020-06-05Save transform during transactionKalyan Sriram-1/+4
Closes: https://github.com/swaywm/sway/issues/5412
2020-06-04input/cursor: refactor tablet tool tip events into seatopsTudor Brindus-27/+25
This commit moves tool tip event generation into seatops. In doing so, some corner cases where we'd erroneously (but likely harmlessly) generate both tablet and pointer events simultaneously are eliminated.
2020-06-03shells: Resize on commit if geometry x/y changesKenny Levinsen-2/+6
Client-side decorations lead to changes to y position, so make sure we catch that.
2020-06-03container: Remove useless surface dimensionsKenny Levinsen-15/+8
The adjustments to resize logic left them unnecessary.
2020-06-03transaction: Improve transaction commentaryKenny Levinsen-5/+6
Some comments where slightly misleading.
2020-06-03transaction: Account for full size when centering contentKenny Levinsen-10/+10
The centering logic needs to take borders, titlebars and CSDs into account. Instead of using the main surface geometry, use the container and view geometry, which account for this.
2020-06-03view: update_size should only update pending sizeKenny Levinsen-2/+0
Updating the current size outside transactions lead to rendering glitches during resizes.
2020-06-03view: Save all buffers associated with viewKenny Levinsen-53/+85
During the execution of a resize transaction, the buffer associated with a view's surface is saved and reused until the client acknowledges the resulting configure event. However, only one the main buffer of the main surface was stored and rendered, meaning that subsurfaces disappear during resize. Iterate over all, store and render buffers from all surfaces in the view to ensure that correct rendering is preserved.
2020-06-01xwayland: pass focus to previous unmanaged surface on unmapTudor Brindus-0/+16
This is necessary because some applications (e.g. Jetbrains IDEs) represent their multi-level menus as unmanaged surfaces, and when closing a submenu, the main menu should get input focus. Closes #5347.
2020-05-30tree/container: refactor `tiling_container_at` to check boundsTudor Brindus-19/+32
This fixes bugs where a floating container would take input way past its borders when its parent was fullscreen, since the call to `tiling_container_at` in input/cursor.c's `node_at_coords` did not check bounds.
2020-05-29Add views idle inhibition status in get_tree outputDamien Tardy-Panis-2/+112
Fixes #5286
2020-05-29seat_cmd_cursor: emit frame eventsBrian Ashworth-0/+4
This emits frame events for the seat_cmd_cursor subcommands. The wl_pointer frame event are required to notify clients when to process the events. It will now be emitted after cursor movement, button press, button release, and axis events.
2020-05-29input/cursor: rename `simulated_tool_tip_down` to be more accurateTudor Brindus-7/+7
This is a tiny cleanup commit that renames `simulated_tool_tip_down` to `simulating_pointer_from_tool_tip`, making it match `simulating_pointer_from_touch`. This is a better name since it makes it clear that it's the *pointer* that's being simulated, not the tool tip.
2020-05-28ipc: invert output transformation when necessaryTudor Brindus-4/+9
After swaywm/wlroots#2023, #4996 inverted configuration transformations. For consistency, we should undo (double-apply) the inversion when communicating via IPC. Closes #5356.
2020-05-28input/pointer: send pointer enter event on confine warpTudor Brindus-0/+3
The spec has this to say about sending events on confine creation: Whenever the confinement is activated, it is guaranteed that the surface the pointer is confined to will already have received pointer focus and that the pointer will be within the region passed to the request creating this object. ...and on region update: If warped, a wl_pointer.motion event will be emitted, but no wp_relative_pointer.relative_motion event. Prior to this patch, sway did neither, and updated the hardware cursor position without notifying the underlying surface until the next motion event. This led to inconsistent results, especially in applications that draw their own software cursor.
2020-05-27Log Xwayland startup failuresTudor Brindus-10/+14
Though unlikely, this commit makes server initialization totally explicit in the logs.
2020-05-26input/cursor: keep reference to cursor in constraintTudor Brindus-5/+4
set_region accepts a NULL *data, so we can't use it to reference the constraint and find the cursor through its seat. Fixes #5386.
2020-05-25input/cursor: fix heap-buffer overflow in constraint set_regionTudor Brindus-2/+6
Fixes #5383, caused by an oversight in 6f0a0bd.
2020-05-25input/tablet: add seatop_down entry for tablet inputTudor Brindus-1/+73
Currently, when tablet input exits a window during an implicit grab, it passes focus to another window. For instance, this is problematic when trying to drag a scrollbar, and exiting the window — the scrollbar motion stops. Additionally, without `focus_follows_mouse no`, the tablet passes focus to whatever surface it goes over regardless of if there is an active implicit. If the tablet is over a surface that does not bind tablet handlers, sway will fall back to pointer emulation, and all of this works fine. It probably should have consistent behavior between emulated and not-emulated input, though. This commit adds a condition for entering seatop_down when a tablet's tool tip goes down, and exiting when it goes up. Since events won't be routed through seatop_default, this prevents windows losing focus during implicit grabs. Closes #5302.
2020-05-24common/log: use bright black rather than black for SWAY_DEBUGTudor Brindus-1/+1
On some terminals under default settings, black is truly rendered as `#000`, making it unreadable when the background is also black. Closes #5141.
2020-05-22ipc: show marks of containers without view in treelbonn-8/+8
2020-05-21Remove code related to the security featuresÉrico Rolim-129/+0
- Remove struct definitions - Remove struct members - Remove initializations and frees
2020-05-21Fix typos in commentsMartin Michlmayr-2/+2
2020-05-21input/pointer: only warp cursor when the confine region has changedTudor Brindus-1/+18
Refs #5268.
2020-05-20swaybar: add NULL check when listing workspacesMilkey Mouse-1/+1
For some reason my version of sway doesn't show workspace names: $ swaymsg -t get_outputs Output HDMI-A-1 '(null) (null) (null)' (inactive) Output HDMI-A-2 '(null) (null) (null)' (inactive) Which is weird, but it's no reason to crash swaybar. The field is totally missing from the JSON, so it ends up doing strcmp(NULL, name) which is undefined behavior.
2020-05-20sway.5: make formatting more consistentMartin Michlmayr-6/+6
2020-05-19input: fix reloading crash due to keyboard group configuringBrian Ashworth-9/+9
Keyboard group keyboards should not call sway_keyboard_configure. They do not have an input config and they derive their state from the keyboards within the group. For some reason, I got sway_keyboard_configure and seat_configure_keyboard mixed up and thought seat_reset_device called the latter. Calling sway_keyboard_configure with a keyboard group's keyboard is not supported and can cause issues. If any clients are listening to the ipc input event, a sigsegv will occur due to not every property - such as identifier - being wired up for keyboard group keyboard's. This also adds an assertion to sway_keyboard_configure to ensure that this does not occur in the future and any instances are quickly caught.
2020-05-15bash completion: swaymsg accepts --version, not --verboseEric Engestrom-1/+1
2020-05-14input: reset keyboard groups keyboard on reset allBrian Ashworth-3/+30
If the keyboard that triggers the reload binding is using the default keymap, default repeat delay, and default repeat rate, the associated keyboard group is never being destroyed on reload. This was causing the keyboard group's keyboard not to get disarmed and result in a use-after-free in handle_keyboard_repeat. If the keyboard was not using the defaults for all three settings, then it's associated keyboard would get destroyed during the reset - which did disarm the keyboard group's keyboard. In this case, the use-after-free would not occur. This adds a block to input_manager_reset_all_inputs that resets the keyboard for all keyboard groups in all seats, which will disarm them. Since the inputs are all being reset anyway, which will reset all individual keyboards, it is not necessary to be selective on which ones get reset.
2020-05-14security.d: remove directoryÉrico Rolim-85/+0
Remove the entries from meson.build as well.
2020-05-13commands: Add per-view shortcuts_inhibitor commandMichael Weiser-9/+103
Add a separate per-view shortcuts_inhibitor command that can be used with criteria to override the per-seat defaults. This allows to e.g. disable shortcuts inhibiting globally but enable it for specific, known-good virtualization and remote desktop software or, alternatively, to blacklist that one slightly broken piece of software that just doesn't seem to get it right but insists on trying. Add a flag to sway_view and handling logic in the input manager that respects that flag if configured but falls back to per-seat config otherwise. Add the actual command but with just enable and disable subcommands since there's no value in duplicating the per-seat activate/deactivate/toggle logic here. Split the inhibitor retrieval helper in two so we can use the backend half in the command to retrieve inhibitors for a specific surface and not just the currently focused one. Extend the manual page with documentation of the command and references to its per-seat sibling and usefulness with criteria. Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
2020-05-13Implement pointer simulation if client hasn't bound to touchDavid96-24/+52
2020-05-13Really fix floating window border resize problemsAdam Kürthy-10/+19
Fixes: https://github.com/swaywm/sway/pull/5250
2020-05-13input/cursor: don't apply pointer constraint to emulated tablet inputTudor Brindus-4/+7
Closes #5268.
2020-05-11Simplify repaint scheduling documentationKenny Levinsen-32/+29
The current documentation for repaint scheduling is very technical and somewhat confusing. Closes: https://github.com/swaywm/sway/issues/4769
2020-05-10Fix some mistakes in grimshot docsPaul Ouellette-14/+14
2020-05-10input/tablet: simplify parameter plumbing for tablet referencesTudor Brindus-18/+14
This is a small cleanup commit for removing `sway_tablet` parameters from functions that already accept `sway_tablet_tool`, since the tablet reference can be accessed through `tool->tablet`.
2020-05-08input/keyboard: use wlr_keyboard_keymaps_match from wlrootsTudor Brindus-15/+8
Added in swaywm/wlroots#2172, so that sway doesn't need to maintain an independent copy of this function.
2020-05-05grimshot: Skip creating a temp file when copyingHugo Osvaldo Barrera-6/+1
2020-05-05grimshot: Add a man pageHugo Osvaldo Barrera-7/+168
2020-05-05grimshot: Add a separate flag for notificationsHugo Osvaldo Barrera-4/+18
Make notifications a separate flag. Personally, I trigger grimshot myself most of the time (via sway bindsym) rather than by some external means, so I don't need to be notified of it happening. However, keep a flag with this functionality there for those scenarios there it's necessary to inform the user. Also print the file location when saving the screenshot.