summaryrefslogtreecommitdiffstats
path: root/sway/input
Commit message (Collapse)AuthorAge
* Add libinput send_events config for touchLibravatar Thiago Mendes2018-10-10
|
* Merge pull request #2806 from v-gu/add-libinput-support-for-keyboardLibravatar Drew DeVault2018-10-10
|\ | | | | add libinput config for keyboard
| * add libinput config for keyboardLibravatar Vincent Gu2018-10-09
| | | | | | | | add send_events support
* | Merge branch 'master' into mouse-warping-containerLibravatar Ryan Dwyer2018-10-10
|\ \
| * | Fix floating click eventsLibravatar Ryan Dwyer2018-10-10
| |/ | | | | | | | | | | | | | | * Set focus to a floating container when clicking its title bar. * Raise floating when user clicks title bar or decorations (in the seat_begin functions). * In container_at, it only returned a floating container if the user had clicked the surface. This makes it use floating_container_at instead.
* / Add mouse_warping containerLibravatar Rouven Czerwinski2018-10-10
|/ | | | | | | This option always moves the cursor into the middle of the container if the warp variable is true in seat_set_focus_warp. Fixes #2577
* Introduce container_is_transient_forLibravatar Ryan Dwyer2018-10-08
|
* Implement popup_during_fullscreenLibravatar Ryan Dwyer2018-10-08
| | | | | | | | | | This introduces a new view_impl function: is_transient_for. Similar to container_has_ancestor but works using the surface parents rather than the tree. This patch modifies view_is_visible, container_at and so on to allow transient views to function normally when they're in front of a fullscreen view.
* Remove unneeded variableLibravatar Ryan Dwyer2018-10-08
|
* Reload config using idle eventLibravatar Ryan Dwyer2018-10-08
| | | | | | | | | | | | | | | | This patch makes it so when you run reload, the actual reloading is deferred to the next time the event loop becomes idle. This avoids several use-after-frees and removes the workarounds we have to avoid them. When you run reload, we validate the config before creating the idle event. This is so the reload command will still return an error if there are validation errors. To allow this, load_main_config has been adjusted so it doesn't apply the config if validating is true rather than applying it unconditionally. This also fixes a memory leak in the reload command where if the config failed to load, the bar_ids list would not be freed.
* Move sticky containers when switching workspace via criteriaLibravatar Ryan Dwyer2018-10-06
| | | | | | | | | | | | | | | | | | | | | | * Create a view on workspace 1 * Switch to workspace 2 (on the same output) and create a floating sticky view * Use criteria to focus the view on workspace 1 Previously, we only moved the sticky containers when using workspace_switch, but the above method of focusing doesn't call it. This patch relocates the sticky-moving code into seat_set_focus_warp. A side effect of this patch is that if you have a sticky container focused and then switch workspaces, the sticky container will no longer be focused. It would previously retain focus. In seat_set_focus_warp, new_output_last_ws was only set when changing outputs, but now it's always set. This means new_output_last_ws and last_workspace might point to the same workspace, which means we have to make sure we don't destroy it twice. It now checks to make sure they're different, and to make this more obvious I've moved both calls to workspace_consider_destroy to be next to each other.
* Fix crash when flattening container after movingLibravatar Ryan Dwyer2018-10-05
| | | | | | | | | | container_flatten removes the container from the tree (via container_replace) before destroying it. When destroying, the recent changes to handle_seat_node_destroy incorrectly assumes that the container has a parent. This adds a check for destroying a container which is no longer in the tree. If this is the case, focus does not need to be changed.
* Fix #2763Libravatar Drew DeVault2018-10-04
|
* Merge pull request #2760 from RyanDwyer/swaylock-handle-output-disconnectLibravatar emersion2018-10-04
|\ | | | | Give focus to another swaylock surface when output is disconnected
| * Give focus to another swaylock surface when output is disconnectedLibravatar Ryan Dwyer2018-10-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Have multiple outputs * Launch swaylock * Unplug an output (possibly has to be the last "connected" one) * The swaylock surface on the remaining output would not respond to key events This was happening because when the output destroys, focus was not given to the other swaylock surface. This patch makes focus be transferred to another surface owned by the same Wayland client, but only if input was inhibited by the surface being destroyed, and only if it's in the overlay layer. I figure it's best to be overly specific and relax the requirements later if needed. This patch removes a check in seat_set_focus_surface which was preventing focus from being passed from a layer surface to any other surface. I don't know of a use case for this check, but it's possible that this change could produce issues.
* | Ignore unrelated cursor buttons while doing seat operationsLibravatar Ryan Dwyer2018-10-04
|/ | | | | | | | | | | | | | * Click and hold a scrollbar * Drag the cursor onto another surface * While still holding the original button, press and release another cursor button * Things get weird There's two ways to fix this. Either cancel the seat operation and do the other click, or continue the seat operation and ignore the other click. I opted for the latter (ignoring the click) because it's easier to implement, and I suspect a second click during a seat operation is probably unintentional anyway.
* Fix focusing topmost floating windowsLibravatar Jonathan Buch2018-10-03
| | | | | | | | | | | | Re-focus on the container on which the cursor hovers over. A special case is, if there are menus or other subsurfaces open in the focused container. It will prefer the focused container as long as there are subsurfaces. This commit starts caching the previous node as well as the previous x/y cursor position. Re-calculating the previous focused node by looking at the current state of the cursor position does not work, if the environment changes.
* Simplify raising a container in seatLibravatar Jonathan Buch2018-10-03
| | | | | * Factor out raising a floating window into s separate function to enable reuse.
* Add configuration for raising containers on focusLibravatar Jonathan Buch2018-10-03
| | | | | | | * New configuration option: raise_floating (From the discussion on https://github.com/i3/i3/issues/2990) * By default, it still raises the window on focus, otherwise it will raise the window on click.
* Add sanity check for empty focus stackLibravatar Ryan Dwyer2018-10-03
|
* Merge pull request #2703 from RyanDwyer/csd-borderLibravatar Drew DeVault2018-10-03
|\ | | | | Add CSD to border modes
| * Add CSD to border modesLibravatar Ryan Dwyer2018-09-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This replaces view.using_csd with a new border mode: B_CSD. This also removes sway_xdg_shell{_v6}_view.deco_mode and view->has_client_side_decorations as we can now get these from the border. You can use `border toggle` to cycle through the modes including CSD, or use `border csd` to set it directly. The client must support the xdg-decoration protocol, and the only client I know of that does is the example in wlroots. If the client switches from SSD to CSD without us expecting it (via the server-decoration protocol), we stash the previous border type into view.saved_border so we can restore it if the client returns to SSD. I haven't found a way to test this though.
* | Set focus_inactive on a sibling when a container closes in an inactive workspaceLibravatar Ryan Dwyer2018-10-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To reproduce the problem, create layout H[view V[view view view-focused]], then switch to another workspace and have the previously focused view in the vsplit close (eg. using criteria, or an mpv video finishing). Return to the workspace using `$mod+<num>` and the entire vsplit would be focused. This happens because handle_seat_node_destroy would only set a new focus if the currently focused view or a parent was being destroyed. To fix it, it needs to set a sibling of the destroying container to focus_inactive regardless of the current focus, then restore current focus if needed. This patch changes the function accordingly. Additionally: * The function now makes an early return if the node being destroyed is a workspace. * set_focus has been renamed to needs_new_focus. This variable is true if the head focus needs to be changed.
* | Fix smart gapsLibravatar Brian Ashworth2018-10-01
| |
* | Merge pull request #2725 from PumbaPe/add-tap-and-dragLibravatar Drew DeVault2018-09-30
|\ \ | | | | | | Add tap and drag to sway-input
| * | add tap-and-drag setting to sway-inputLibravatar PP2018-09-29
| |/
* | Turn funcs() into funcs(void)Libravatar Arkadiusz Hiler2018-09-30
| | | | | | | | If they really do not take undefined number of arguments.
* | Merge pull request #2698 from ianyfan/hide-cursorLibravatar emersion2018-09-29
|\ \ | |/ |/| Only show cursor if pointer configured
| * cursor: allow cursor_set_image to accept a NULL image to hide cursorLibravatar Ian Fan2018-09-24
| |
| * seat: only show cursor if pointer configuredLibravatar Ian Fan2018-09-24
| |
* | Merge pull request #2704 from ianyfan/tablet-configLibravatar Drew DeVault2018-09-27
|\ \ | | | | | | input: enable configuring tablets with libinput
| * | input: enable configuring tablets with libinputLibravatar Ian Fan2018-09-24
| |/
* / Add a missing null check for moving tiling containersLibravatar Alexander Bakker2018-09-25
|/
* Implement support for input wildcardLibravatar Brian Ashworth2018-09-23
|
* Fix GtkMenuBar always opening first itemLibravatar Ryan Dwyer2018-09-23
| | | | | It seems like advertising that we support touch when we don't, while using SSD, makes GtkMenuBar misbehave. Please don't ask me why...
* Implement tab cycling using mouse wheelLibravatar Ryan Dwyer2018-09-22
| | | | | | | | | | | | | Firstly, a change had to be made to the container_at functions. If you create layout `T[view H[view view]]` and hover the second tab, the container_at functions would return the focus_inactive child. They now return the split container itself. To compensate for this, dispatch_cursor_button has been adjusted to find the focus_inactive child before focusing it. The actual implementation of wheel scrolling is pretty straightforward. This uses handle_cursor_axis, so I took a similar approach to handle_cursor_button (ie. creating a dispatch_cursor_axis function).
* Rename seat_get_active_child to seat_get_active_tiling_childLibravatar Ryan Dwyer2018-09-16
| | | | | Also renames container to con in one function to prevent ugly line wrapping.
* Make seat_get_active_child ignore floating childrenLibravatar Ryan Dwyer2018-09-16
| | | | | | | | | | | | | | | seat_get_active_child is used to get the active tiling child in a few places, such as outputs getting their active workspace and tabbed/stacked containers getting their visible child. When a workspace uses a tabbed or stacked layout and contains a focused floating view, calling seat_get_active_child on the workspace would incorrectly return the floating view. This changes it so it will return the tiling child. This fixes the following bug: * Create layout T[view view] then float one of the views * Attempt to click the tiling view to give it focus - it wouldn't work because seat_get_active_child would return the floating view
* Update for swaywm/wlroots#1243Libravatar emersion2018-09-14
|
* Minor fixes to tiling drag implementationLibravatar Ryan Dwyer2018-09-12
| | | | | | | | * Make container_add_sibling's `after` argument a boolean. * Use a constant for drop layout border * Make thickness an int * Add button state check * Move comments in seat_end_move_tiling
* Fix line lengthLibravatar Ryan Dwyer2018-09-11
|
* Implement tiling dragLibravatar Ryan Dwyer2018-09-11
| | | | Hold floating_modifier and drag a tiling view to a new location.
* Rename OP_MOVE to OP_MOVE_FLOATINGLibravatar Ryan Dwyer2018-09-11
| | | | In preparation for introducing OP_MOVE_TILING.
* Merge pull request #2603 from emersion/fix-dndLibravatar Drew DeVault2018-09-07
|\ | | | | Fix drag-and-drop
| * Fix drag-and-dropLibravatar emersion2018-09-07
| |
* | Fix workspace switchingLibravatar Ryan Dwyer2018-09-07
| | | | | | | | The output also needs to be made dirty when focusing a new output.
* | Don't dirty outputs unnecessarilyLibravatar Ryan Dwyer2018-09-06
| |
* | Make outputs dirty when changing focusLibravatar Ryan Dwyer2018-09-06
| | | | | | | | | | Fixes a workspace switch bug introduced by 5967ee1fbcba66ea57d971b924a51209a70d3aaa.
* | Introduce seat_set_focus_container and seat_set_focus_workspaceLibravatar Ryan Dwyer2018-09-06
| | | | | | | | | | | | | | | | | | | | | | These are the same as seat_set_focus, but accept a specific type rather than using nodes. Doing this adds more typesafety and lets us avoid using &con->node which looks a little ugly. This fixes a crash that pretty much nobody would ever come across. If you have a bindsym for "focus" with no arguments and run it from an empty workspace, sway would crash because it assumes `container` is not NULL.
* | Merge pull request #2578 from RyanDwyer/fix-binding-reloadLibravatar emersion2018-09-06
|\ \ | | | | | | Fix management of bindings during reload