aboutsummaryrefslogtreecommitdiff
path: root/sway
AgeCommit message (Collapse)Author
2018-09-12Minor fixes to tiling drag implementationRyan Dwyer
* 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
2018-09-11Fix crash in workspace_wrap_childrenRyan Dwyer
When workspace_wrap_children is called on a workspace which has a fullscreen child and the fullscreen child is a direct child of the workspace, sway would crash. The workspace's fullscreen pointer is unset when the fullscreen container is detached and applied again when added to a parent, but in this case the parent hadn't yet been added to the workspace which meant con->workspace was NULL. The fix makes container_handle_fullscreen_reparent return if there's no workspace, and the fullscreen pointer is reapplied in workspace_wrap_children.
2018-09-11Fix line lengthRyan Dwyer
2018-09-11Fix dropzone box on scaled outputsRyan Dwyer
2018-09-11Implement tiling dragRyan Dwyer
Hold floating_modifier and drag a tiling view to a new location.
2018-09-11Introduce tiling_drag directiveRyan Dwyer
2018-09-11Rename OP_MOVE to OP_MOVE_FLOATINGRyan Dwyer
In preparation for introducing OP_MOVE_TILING.
2018-09-10Minor fixWilliam Wold
2018-09-10Minor fixWilliam Wold
2018-09-10Prevent stacked layout from crashingWilliam Wold
2018-09-10Give windows pointer focus immediately when they are switched toWilliam Wold
Fixes #2401 (aka #2558) Previously, when switching windows, pointer focus was not changed until the pointer was moved. This makes the pointer enter happen immediately, without the side effects of other attempted fixes.
2018-09-10Merge pull request #2613 from apreiml/fix_no_last_focus_failemersion
handle_layer_shell_surface: Do not crash if seat doesn't have focus
2018-09-10handle_layer_shell_surface: Do not crash if seat doesn't have focusArmin Preiml
2018-09-08commands: prevent running empty seat commandIan Fan
2018-09-08Merge pull request #2530 from apreiml/ipc_missing_get_treeDrew DeVault
start adding missing ipc properties
2018-09-08code style fixesArmin Preiml
2018-09-08get_tree: percent cast to double on divisionArmin Preiml
2018-09-08get_tree: default valuesArmin Preiml
Added default values for all nodes, because the i3 get_tree always returns all fields inside the json objects. Add geometry and window for views. Window is only availabel on x11 windows otherwise it's NULL. Calculate percent only if parent is not empty to avoid division by 0.
2018-09-08missing ipc stuff: rebase to typesafetyArmin Preiml
2018-09-08Align titles to baselineRyan Dwyer
This does the following: * Adds a baseline argument to get_text_size (the baseline is the distance from the top of the texture to the baseline). * Stores the baseline in the container when calculating the title height. * Takes the baseline into account when calculating the config's max font height. * When rendering, pads the textures according to the baseline so they line up.
2018-09-08Fix gaps in title textures and vertically center themRyan Dwyer
There was code that attempted to fill in the gap below the title texture when the texture isn't tall enough, but this only worked when the output was positioned at 0,0. The reason is that render_rect expects a box passed in a hybrid layout-local/output-buffer-local system, and we were passing purely output-buffer-local. I've added a comment documenting this. By the way, we can't use layout-local coordinates for the rectangle box because in some cases we set the box based on a texture size. Texture sizes are buffer-local, and we'd have to divide them to bring it back to layout-local which means losing precision. We could use output-buffer-local coordinates for the box, but this would require translating the coordinates from layout-local to output-buffer-local in many places during rendering. This patch also vertically centers the text inside the title bar.
2018-09-07Merge pull request #2603 from emersion/fix-dndDrew DeVault
Fix drag-and-drop
2018-09-07Fix drag-and-dropemersion
2018-09-07Fix workspace switchingRyan Dwyer
The output also needs to be made dirty when focusing a new output.
2018-09-06Merge pull request #2594 from RyanDwyer/fix-pinentryemersion
Float views when min == max on either dimension
2018-09-06Float views when min == max on either dimensionRyan Dwyer
This fixes pinentry-gtk-2, but might make other views floating which would otherwise be tiled. This patch is more of a trial which could end up becoming a permanent fix.
2018-09-06Don't dirty outputs unnecessarilyRyan Dwyer
2018-09-06Second attempt at restoring focus when closing a fullscreen viewRyan Dwyer
To reproduce the problem this is fixing, create H[view view view], fullscreen one of the views and close it. The entire workspace will be given focus rather than one of the siblings. This happens because we emit the destroy event, so the seat code tries to find a new focus, but the view it finds is still believed to be hidden by the fullscreen view so it's discarded and the workspace is used instead. This clears the workspace's fullscreen pointer prior to emitting the destroy event so that the seat code finds an appropriate new focus.
2018-09-06Make outputs dirty when changing focusRyan Dwyer
Fixes a workspace switch bug introduced by 5967ee1fbcba66ea57d971b924a51209a70d3aaa.
2018-09-06Merge pull request #2589 from RyanDwyer/seat-set-focus-typeemersion
Introduce seat_set_focus_container and seat_set_focus_workspace
2018-09-06Fix crash when switching to new workspace during transactionRyan Dwyer
When rendering, the workspace for the output needs to be retrieved from the output's `current` state. output_get_active_workspace returns the pending workspace, which crashes if the pending workspace is new and hasn't completed a transaction yet.
2018-09-06Introduce seat_set_focus_container and seat_set_focus_workspaceRyan Dwyer
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.
2018-09-06Merge pull request #2578 from RyanDwyer/fix-binding-reloademersion
Fix management of bindings during reload
2018-09-06Fix crash when running "layout toggle"Ryan Dwyer
The argc and argv used in this function are the same ones used by the layout command itself.
2018-09-05Merge pull request #2586 from RyanDwyer/fix-fullscreen-focus-crashDrew DeVault
Fix crash when focusing from fullscreen in an invalid direction
2018-09-05Merge pull request #2585 from RyanDwyer/fix-move-across-outputsDrew DeVault
Fix crash when moving view across outputs
2018-09-06Fix crash when focusing from fullscreen in an invalid directionRyan Dwyer
* Fullscreen a view * Run `focus <direction>` where there is no output in that direction The output returned was rightfully NULL, which needs to be handled.
2018-09-05Merge pull request #2583 from RyanDwyer/fix-null-surface-crashDrew DeVault
Fix crash when views rapidly map and unmap
2018-09-06Fix crash when moving view across outputsRyan Dwyer
It was incorrectly determining that the container being moved and the destination had the same parent, which resulted in tree corruption. Both parents can be NULL but the containers may belong to different workspaces. To reproduce, create layout H[V[view] view] in one workspace then move a view left or right from another output into that workspace.
2018-09-06Fix crash when views rapidly map and unmapRyan Dwyer
Suppose the following: * Transactions are already in progress - say transaction A. * View A maps, which creates transaction B and appends it to the transaction queue. * View B maps, which creates transaction C and appends it to the queue. * View A unmaps, which creates transaction D and appends it to the queue. * Transaction A completes, so transaction B attempts to save View A's buffer, but this doesn't exist so it saves nothing. * Rendering code attempts to render View A, but there is no saved buffer nor live buffer that it can use. Rather than implement an elaborate solution for a rare circumstance, I've take the safe option of just not rendering anything for that view. It means that if you reproduce the scenario above, you might get the title and borders rendered but no surface.
2018-09-05Merge pull request #2579 from RyanDwyer/adjust-container-boxDrew DeVault
Adjust container box
2018-09-06Restore focus correctly when closing a fullscreen viewRyan Dwyer
We weren't calling seat_send_focus. I think this was previously called by seat_set_focus_warp.
2018-09-06Adjust container boxRyan Dwyer
Prior to f5b9815128b6c000bb5d47c339480fa481a5e99d, children of tabbed and stacked containers would have their container size and position set to the same as the tabbed/stacked container. Normally this would be a problem for a layout such as T[V[view]], but there was some code in the arrange functions which would check if the grandparent of the view was a tabbed or stacked container and would offset the view's Y accordingly. Commit f5b9815128b6c000bb5d47c339480fa481a5e99d changed the box to exclude the titlebar for all tabbed/stacked children so that the grandparent check could be removed. But this meant the title was not covered in the container and wasn't damaged when the child changed its title. This patch changes it so that a child of a tabbed/stacked container will have its box include the title bar if the child is a view, but not if it's a layout container. This fixes the title damage issue while avoiding the grandparent check in the arrange functions, and matches what we see visually.
2018-09-06Fix management of bindings during reloadRyan Dwyer
seat_execute_command needs to check the flags on `binding_copy`, as `binding` will be a dangling pointer after a reload command. handle_keyboard_key needs to set the next_repeat_binding for non-reloads prior to executing the command in case the binding is freed by the reload command.
2018-09-05Call wlr_output_enable on enable/disable if neededBrian Ashworth
2018-09-05Allow marked containers to be moved out of the scratchpad via move commandRyan Dwyer
2018-09-05Fix inversed condition in criteriaRyan Dwyer
2018-09-05Fix clicking workspace buttonsRyan Dwyer
Because node_at_coords was returning the workspace's node, it interpreted this as clicking the focused workspace which was a no op.
2018-09-05Fix crash when view in scratchpad becomes urgentRyan Dwyer
2018-09-05Focus empty workspace when clicking itRyan Dwyer
Also removes container_at_coords as this function is no longer necessary.