summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2020-07-01Update version to v1.5-rc2v1.5-rc2Furkan Sahin-1/+1
2020-06-24tree/view: Make foreign-toplevel app_id fallback to classFurkan Sahin-2/+6
It is not a part of the foreign-toplevel-management protocol to get the class of a toplevel, only for getting the app_id. For xwayland clients this is an issue because that means that you cannot identify what application the toplevel refers to which is the point of the app_id property. By falling back to class when an app_id does not exist solves this problem. Phoc also uses app_id and class interchangeably in their implementation of foreign-toplevel-management, in fact they always do that and not only for just this protocol. https://source.puri.sm/Librem5/phoc/-/blob/c8d8a4c5440a6c1647b09dbd3bba7999f9cd433c/src/xwayland.c#L236
2020-06-30output: simplify loop over layer surfacesFurkan Sahin-12/+4
2020-06-28seat: Refocus seat when wlr_drag is destroyedFurkan Sahin-0/+44
wlr_drag installs grabs for the full duration of the drag, leading to the drag target not being focused when the drag ends. This leads to unexpected focus behavior, especially for the keyboard which requires toggling focus away and back to set. We can only fix the focus once the grabs are released, so refocus the seat when the wlr_drag destroy event is received. Closes: https://github.com/swaywm/sway/issues/5116
2020-06-28transaction: Mark client resize immediately readyFurkan Sahin-2/+7
If a client commits a new size on its own, we create a transaction for the resize like any other. However, this involves sending a configure and waiting for the ack, and wlroots will not send configure events when there has been no change. This leads to transactions timing out. Instead, just mark the view ready immediately by size when the client is already ready, so that we avoid waiting for an ack that will never come. Closes: https://github.com/swaywm/sway/issues/5490
2020-06-26tree/view: fix smart borders with tabbed/stacked ancestorFurkan Sahin-8/+31
Fixes #5484.
2020-06-25input/pointer: correctly handle bindings for synthetic eventsFurkan Sahin-2/+3
This commit addresses a regression introduced in bdbc411. Fixes #5481.
2020-06-24Update version to 1.5-rc11.5-rc1Furkan Sahin-1/+1
2020-06-13Add Romanian translationFurkan Sahin-1/+63
2019-08-20Implement wlr-foreign-toplevel-management-v1Furkan Sahin-0/+66
2020-06-19input_cmd_click_method: fix typo in error textFurkan Sahin-1/+1
2020-06-19input/seat: don't notify keyboard grabs with NULL surface on shutdownFurkan Sahin-1/+7
Fixes #5469, a minor regression introduced in #5368.
2020-06-18input: disable events for map_to_output devices when output not presentFurkan Sahin-17/+44
Fixes #3449.
2020-06-14input/pointer: don't trigger pointer bindings for emulated inputFurkan Sahin-16/+16
Prior to this commit, a tablet device could trigger mouse button down bindings if the pen was pressed on a surface that didn't bind tablet handlers -- but it wouldn't if the surface did bind tablet handlers. We should expose consistent behavior to users so that they don't have to care about emulated vs. non-emulated input, so stop triggering bindings for any non-pointer devices.
2020-06-14input/cursor: send idle events based off device type, not input typeFurkan Sahin-26/+45
Previously, a tablet or touch device could report activity as a pointer device if it went through pointer emulation. This commit refactors idle sources to be consistently reported based on the type of the device that generated an input event, and now how that input event is being processed.
2020-06-17grimshot: fix POSIX complianceFurkan Sahin-1/+1
source is not POSIX compliant, '.' is. https://stackoverflow.com/a/11588629
2020-06-17grimshot: Unary operator expectedFurkan Sahin-2/+2
fixes this error: /usr/local/bin/grimshot: line 22: [: ==: unary operator expected
2020-04-27Add support for viewporterFurkan Sahin-11/+24
Depends on [1]. [1]: https://github.com/swaywm/wlroots/pull/2092
2020-06-14input/pointer: don't trigger pointer bindings for emulated inputFurkan Sahin-23/+42
Prior to this commit, a tablet device could trigger mouse button down bindings if the pen was pressed on a surface that didn't bind tablet handlers -- but it wouldn't if the surface did bind tablet handlers. We should expose consistent behavior to users so that they don't have to care about emulated vs. non-emulated input, so stop triggering bindings for any non-pointer devices.
2020-06-14input/tablet: focus appropriate node on tip downFurkan Sahin-1/+23
This commit makes tablet input more usable when `focus_follows_mouse` is set to `no`. Previously, tapping down on surfaces that bound tablet input would not switch focus, whereas tapping on surfaces that didn't (and hence went through pointer emulation) did.
2020-06-13input/keyboard: wlr_keyboard_group enter and leaveFurkan Sahin-45/+128
This adds support for wlr_keyboard_group's enter and leave events. The enter event just updates the keyboard's state. The leave event updates the keyboard's state and if the surface was notified of a press event for any of the keycodes, it is refocused so that it can pick up the current keyboard state without triggering any keybinds.
2020-06-13i3-compat: add GET_BINDING_STATE IPC commandFurkan Sahin-0/+48
2020-06-13Remove view child surface_{map,unmap} listeners on destroyFurkan Sahin-0/+4
2020-06-12view: fix surface_new_subsurface use-after-freeFurkan Sahin-0/+1
2020-06-11swaybar: ensure correct init order for status_lineFurkan Sahin-4/+8
`$WAYLAND_SOCKET` is unset by `wl_display_connect` after it has successfully connected to the wayland socket. However, subprocesses spawned by swaybar (status-command) don't have access to waybar's fds as $WAYLAND_SOCKET is O_CLOEXEC. This means any status command which itself tries to connect to wayland will fail if this environment variable is set. Reorder display and status-command initialization so that this variable is not set and add an assert so we can enforce this invariant in future.
2020-06-11Log Sway version on startupFurkan Sahin-0/+1
2020-06-10swaynag: sway_abort on failure to properly registerFurkan Sahin-1/+4
In case `wl_display_roundtrip` returns an error after registering for events, print a more user-friendly error message and exit. Previously, if the build did not have assertions enabled, this would likely result in a segfault. With assertions enabled, it's not user friendly to terminate with internal implementation information.
2020-05-31tree/view: fix smart gaps when ancestor container is tabbed or stackedFurkan Sahin-11/+13
Fixes #5406.
2020-06-06input: tweak resize behavior to not change tab focus on border clickFurkan Sahin-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-07swaynag: allow specifying more buttons which execute and dismissFurkan Sahin-1/+30
I don't love -z / -Z, but I figure this patch is far from being accepted for other reasons too.
2020-06-04input/tablet: allow moving tiling tablet v2 surfaces by pen inputFurkan Sahin-7/+25
Closes #5293.
2020-06-04input/tablet: allow moving floating tablet v2 surfaces by pen inputFurkan Sahin-15/+52
Refs #5293.
2020-06-04tree/container: introduce `container_toplevel_ancestor` helperFurkan Sahin-17/+19
This allows us to not have to explicitly write the same while loop everywhere.
2020-06-05common/util: fix `get_current_time_msec` returning microsecondsFurkan Sahin-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 commonFurkan Sahin-1/+2
2020-05-20Use new wlroots API for clearing keyboard/pointer focus during grabsFurkan Sahin-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 transactionFurkan Sahin-1/+4
Closes: https://github.com/swaywm/sway/issues/5412
2020-06-04input/cursor: refactor tablet tool tip events into seatopsFurkan Sahin-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 changesFurkan Sahin-2/+6
Client-side decorations lead to changes to y position, so make sure we catch that.
2020-06-03container: Remove useless surface dimensionsFurkan Sahin-15/+8
The adjustments to resize logic left them unnecessary.
2020-06-03transaction: Improve transaction commentaryFurkan Sahin-5/+6
Some comments where slightly misleading.
2020-06-03transaction: Account for full size when centering contentFurkan Sahin-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 sizeFurkan Sahin-2/+0
Updating the current size outside transactions lead to rendering glitches during resizes.
2020-05-31view: Save all buffers associated with viewFurkan Sahin-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-05-28xwayland: pass focus to previous unmanaged surface on unmapFurkan Sahin-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-29tree/container: refactor `tiling_container_at` to check boundsFurkan Sahin-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-05Add views idle inhibition status in get_tree outputFurkan Sahin-2/+112
Fixes #5286
2020-05-28seat_cmd_cursor: emit frame eventsFurkan Sahin-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-28input/cursor: rename `simulated_tool_tip_down` to be more accurateFurkan Sahin-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 necessaryFurkan Sahin-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.