aboutsummaryrefslogtreecommitdiff
path: root/sway/tree
AgeCommit message (Collapse)Author
2018-08-01Correctly track saved surfaces during multiple transactionsRyan Dwyer
Fixes #2364. Suppose a view is 600px wide, and we tell it to resize to 601px during a resize operation. We create a transaction, save the 600px buffer and send the configure. This buffer is saved into the associated instruction, and is rendered while we wait for the view to commit a 601px buffer. Before the view commits the 601px buffer, suppose we tell it to resize to 602px. The new transaction will also save the buffer, but it's still the 600px buffer because we haven't received a new one yet. Then suppose the view commits its original 601px buffer. This completes the first transaction, so we apply the 601px width to the container. There's still the second (now only) transaction remaining, so we render the saved buffer from that. But this is still the 600px buffer, and we believe it's 601px. Whoops. The problem here is we can't stack buffers like this. So this commit removes the saved buffer from the instructions, places it in the view instead, and re-saves the latest buffer every time the view completes a transaction and still has further pending transactions. As saved buffers are now specific to views rather than instructions, the functions for saving and removing the saved buffer have been moved to view.c. The calls to save and restore the buffer have been relocated to more appropriate functions too, favouring transaction_commit and transaction_apply rather than transaction_add_container and transaction_destroy.
2018-07-30Fix title textures on scale changeBrian Ashworth
2018-07-28Merge pull request #2360 from RyanDwyer/floating-containersDrew DeVault
Allow containers to float
2018-07-28Fix crash when a deferred command destroys a workspaceRyan Dwyer
Example config that produces the crash (with a single output): workspace 1 workspace 2 Prior to this commit, container_workspace_free would manually mark the L_FLOATING container as destroying and free it. This assumed the L_FLOATING container would never be involved in a transaction. This was a safe assumption when it was implemented, but became an incorrect assumption once parent/child relationships became transactionised. This commit removes the L_FLOATING free from container_workspace_free. When the workspace is destroyed, it starts the normal destroy process on the L_FLOATING container so it can be freed via transactions.
2018-07-28Fix crash when unfloating child of container into empty workspaceRyan Dwyer
2018-07-28Fix focus mode_toggle from a child of a floating containerRyan Dwyer
Also fixes a crash when unfloating a window. It needs to add it back to the tiling tree as a sibling rather than a child, because the reference container might be a view.
2018-07-28When unfloating, return container to previously focused tiled containerRyan Dwyer
This introduces seat_get_focus_inactive_tiling and updates `focus mode_toggle` to use it instead, because the previous method wasn't guaranteed to return a tiling view.
2018-07-28Fix crash when a child of a floating container is in the scratchpadRyan Dwyer
2018-07-28Allow containers to floatRyan Dwyer
Things worth noting: * When a fullscreen view unmaps, the check to unset fullscreen on the workspace has been moved out of view_unmap and into container_destroy, because containers can be fullscreen too * The calls to `container_reap_empty_recursive(workspace)` have been removed from `container_set_floating`. That function reaps upwards so it wouldn't do anything. I'm probably the one who originally added it... * My fix (b14bd1b0b1536039e4f46fe94515c7c44e7afc61) for the tabbed child crash has a side effect where when you close a floating container, focus is not given to the tiled container again. I've removed my fix and removed the call to `send_cursor_motion` from `seat_set_focus_warp`. We should consider calling it from somewhere earlier in the call stack.
2018-07-28Preserve workspace nameMihai Coman
2018-07-27Fix assign to workspaceRyan Dwyer
2018-07-26Refactor view_mapRyan Dwyer
* Move workspace selection into separate function * Instead of keeping a `prev_focus` variable, do the check in `should_focus` (ie. views can only take focus if they're mapped into the active workspace) * Fix assign-to-output - it previously set `prev_focus` but should be `target_sibling` * Remove call to `workspace_switch` as we'll only ever focus the view if it's in the active workspace
2018-07-26Allow containers to be fullscreenRyan Dwyer
2018-07-25fix #2355: "move workspace to output up" crashesCédric Cabessa
when using 2 display, if scaling is different `container_update_textures_recursive` is called when moving workspace on different display. We need to call `container_update_title_textures` only for container of type "CONTAINER" or "VIEW" in order to be consistent with the assert in `update_title_texture`.
2018-07-25more style fixes, reorder config.h includePascal Pascher
2018-07-25reverted includes of "sway/config.h" and replaced with "config.h" from meson ↵Pascal Pascher
build
2018-07-25more style fixes, included "sway/config.h" where neededPascal Pascher
2018-07-24style fixes, exclude sway/desctop/xwayland.c when enable_xwayland: falsePascal Pascher
2018-07-24Added meson option "enable_xwayland" (default: true) to enable/disable ↵Pascal Pascher
xwayland support
2018-07-24Merge pull request #2165 from swaywm/pid-workspacesDrew DeVault
Implement pid->workspace tracking
2018-07-24Address @emersion's review commentsDrew DeVault
2018-07-23Also extract first workspace name from bindcodesfrsfnrrg
2018-07-23Merge branch 'master' into pid-workspacesDrew DeVault
2018-07-23Store scratchpad list in sway_root instead of serverRyan Dwyer
2018-07-23Implement scratchpadRyan Dwyer
Implements the following commands: * move scratchpad * scratchpad show * [criteria] scratchpad show Also fixes these: * Fix memory leak when executing command with criteria (use `list_free(views)` instead of `free(views)`) * Fix crash when running `move to` with no further arguments
2018-07-22Consider view's min/max sizes when resizingRyan Dwyer
2018-07-22Replace static handle_end_operation with seat_end_mouse_operationRyan Dwyer
2018-07-22Implement floating_modifier and mouse operations for floating viewsRyan Dwyer
This implements the following: * `floating_modifier` configuration directive * Drag a floating window by its title bar * Hold mod + drag a floating window from anywhere * Resize a floating view by dragging the border * Resize a floating view by holding mod and right clicking anywhere on the view * Resize a floating view and keep aspect ratio by holding shift while resizing using either method * Mouse cursor turns into resize when hovering floating border or corner
2018-07-20Fix pointer events for overlapping floating viewsRyan Dwyer
Fixes #2315.
2018-07-19Implement assign to outputRyan Dwyer
Eg. assign [class="Firefox"] output foo
2018-07-19Fix crash when moving workspace to outputRyan Dwyer
2018-07-18Merge branch 'master' into destroy-output-destroy-empty-workspacesRyan Dwyer
2018-07-17Fix uninitialized pointer in view_unmapfrsfnrrg
Otherwise, sway crashes due to uninitialized pointer dereference when AddressSanitizer is active.
2018-07-16Merge branch 'master' into default-floating-borderBrian Ashworth
2018-07-17Remove superfluous IPC urgent eventsRyan Dwyer
When an xwayland view is mapped, the IPC urgent event was being sent on every surface commit. I had intentionally ommitted the check because I figured an urgent surface could update its urgent timestamp by sending urgent a second time. But that's not how it works in xwayland's case, and it makes for more complicated code.
2018-07-17Implement default_floating_border command and adjust CSD behaviourRyan Dwyer
2018-07-16Merge pull request #2276 from RyanDwyer/urgencyDrew DeVault
Implement urgency base functionality
2018-07-16Focus view before running criteria when mappingRyan Dwyer
2018-07-16Implement no_focus commandRyan Dwyer
2018-07-16Render containers as urgent if they have an urgent childRyan Dwyer
2018-07-16Mark containers as urgent in IPC if they have urgent viewsRyan Dwyer
2018-07-16Update workspace urgent state when views close or move workspacesRyan Dwyer
2018-07-16Make container_for_each_descendant_dfs descend into floating viewsRyan Dwyer
2018-07-16Fix urgency IPC eventsRyan Dwyer
2018-07-16Implement urgency base functionalityRyan Dwyer
Introduces a command to manually set urgency, as well as rendering of urgent views, sending the IPC event, removing urgency after focused for one second, and matching urgent views via criteria.
2018-07-14Simplify transactions by utilising a dirty flag on containersRyan Dwyer
This PR changes the way we handle transactions to a more simple method. The new method is to mark containers as dirty from low level code (eg. arranging, or container_destroy, and eventually seat_set_focus), then call transaction_commit_dirty which picks up those containers and runs them through a transaction. The old methods of using transactions (arrange_and_commit, or creating one manually) are now no longer possible. The highest-level code (execute_command and view implementation handlers) will call transaction_commit_dirty, so most other code just needs to set containers as dirty. This is done by arranging, but can also be done by calling container_set_dirty.
2018-07-12Don't disable borders for xwayland floating viewsemersion
2018-07-11Updates for swaywm/wlroots#1116emersion
2018-07-11Implement floating_minimum_size and floating_maximum_sizeRyan Dwyer
2018-07-09Update for swaywm/wlroots#1126emersion