aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-28Merge pull request #2372 from RyanDwyer/fix-use-after-free-v2Brian Ashworth
Second attempt at fixing transaction use-after-free
2018-07-28Second attempt at fixing transaction use-after-freeRyan Dwyer
The solution used in 073ac425d5bf6f6393eb91d9b5f84e3caa68f511 doesn't work in all cases because the freed instruction might be ahead in the list, not necessarily behind. The new solution delays running the queue until after the loop has finished iterating, thus avoiding the problem completely.
2018-07-28Merge pull request #2370 from RyanDwyer/transactions-use-after-freeBrian Ashworth
Fix use after free in transactions
2018-07-28Fix use after free in transactionsRyan Dwyer
In set_instructions_ready, calling set_instruction_ready may cause any number of transactions to get applied, which removes them from the list being iterated. The iteration variables need to be adjusted accordingly.
2018-07-27Merge pull request #2369 from mihaicmn/preserve-workspace-nameDrew DeVault
Preserve workspace name
2018-07-28Preserve workspace nameMihai Coman
2018-07-26Merge pull request #2357 from RyanDwyer/cleanup-view-mapBrian Ashworth
Refactor view_map
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-25Merge pull request #2356 from RyanDwyer/fullscreen-containersBrian Ashworth
Allow containers to be fullscreen
2018-07-26Fix indentRyan Dwyer
2018-07-26Allow containers to be fullscreenRyan Dwyer
2018-07-25Merge pull request #2330 from progandy/set-modifier-locksBrian Ashworth
Configure initial state for numlock/capslock
2018-07-25Fix LEDs for configured modifier statesProgAndy
2018-07-25Restrict CapsLock and NumLock commands to the configuration fileProgAndy
2018-07-25Add documentation for xkb_capslock/xkb_numlockProgAndy
2018-07-25Add xkb_numlock/xkb_capslock commands (#2311)ProgAndy
2018-07-25Implement setting NumLock and CapsLock statusProgAndy
After setting the keymap, try to enable NumLock and disable CapsLock. This only works if sway has the xkb master state and controls the keyboard. Prepare configuration settings for later use as well.
2018-07-25Merge pull request #2358 from CedricCabessa/fix-2355-move-workspace-crashesemersion
fix #2355: "move workspace to output up" crashes
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-25Merge pull request #2353 from emersion/render-opaque-overlayDrew DeVault
Improve rendering with a fullscreen opaque overlay surface
2018-07-25Merge pull request #2350 from ppascher/xwayland-optionalDrew DeVault
Added meson option to allow building sway without xwayland support
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-25Merge pull request #2354 from RyanDwyer/fix-crash-on-tab-reapemersion
Fix crash when closing last child of a tabbed container
2018-07-25Fix crash when closing last child of a tabbed containerRyan Dwyer
The crash only occurs if the mouse cursor is above the tabbed container when the last child is closed. Introduced in 03d49490ccff3c5c81bea73622c8616fa61eb3dd, over a week ago and unnoticed until now :O The above commit changes the behaviour of a focus change. When you change focus, it sends pointer motion which makes the client set a new cursor image. We already had this behaviour for workspace switching, but this commit adds it for view switching too, such as in a tabbed container or when closing a view. The sequence of events that leads to the crash is: * The last child of a tabbed container unmaps, which triggers a `destroy` event before we've cleaned up the child or reaped the tabbed container. * The seat code listens to the `destroy` event and removes the seat container from the focus stack. As part of this, it decides to set focus to the parent (my fix alters this decision). * When setting focus to the new parent, the container motion is sent as per the previously mentioned commit. * The motion code uses `container_at`, which encounters the tabbed container and its child in a half destroyed state, and everything blows up from there. `con->parent` is needed because scratchpad containers don't have parents if they're hidden, so this probably fixes a crash when a hidden scratchpad container closes too. The `con->parent->children->length > 1` check should catch any cases where the parent is about to be reaped.
2018-07-25Improve rendering with a fullscreen opaque overlay surfaceemersion
The rendering code doesn't use the exclusive input surface at all anymore to decide to skip rendering of shell surfaces. This fixes a weird situation in which a client requests exclusive input but isn't an overlay layer surface. The renderer also renders all overlay surfaces in this situation, not just one. This simplifies the code and fixes rendering when there are more than one overlay surfaces (e.g. for a virtual keyboard to type the lockscreen password).
2018-07-25Merge pull request #2352 from RedSoxFan/implement-2335emersion
Implement floating_modifier <mod> [inverse|normal]
2018-07-24Change button var passed to seat_begin_moveBrian Ashworth
2018-07-24Implement floating_modifier <mod> [inverse|normal]Brian Ashworth
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-24Merge pull request #2346 from RyanDwyer/fix-crash-on-clickDrew DeVault
Fix crash when clicking certain surfaces
2018-07-24Fix crash when clicking certain surfacesRyan Dwyer
cont was NULL.
2018-07-24Merge pull request #2344 from RyanDwyer/mod-resize-any-directionemersion
Make mod+resize work in any direction
2018-07-24Make mod+resize work in any directionRyan Dwyer
This makes it so if you hold mod and right click on a surface to resize it, the resize direction is chosen based on which quarter of the surface you've clicked. The previous implementation only resized towards the bottom right.
2018-07-24Merge pull request #2303 from frsfnrrg/mouse-bindingsRyan Dwyer
Implement mouse bindings
2018-07-24Merge branch 'master' into mouse-bindingsRyan Dwyer
2018-07-23Merge pull request #2284 from frsfnrrg/resolve-workspace-name-todoBrian Ashworth
Also extract first workspace name from bindcodes
2018-07-23Also extract first workspace name from bindcodesfrsfnrrg
2018-07-23Merge pull request #2340 from RedSoxFan/parse_booleanDrew DeVault
Switch to using a function to parse booleans
2018-07-23Invoke mouse bindingsfrsfnrrg
The mouse binding logic is inspired/copied from the keyboard binding logic; we store a sorted list of the currently pressed buttons, and trigger a binding when the currently pressed (or just recently pressed, in the case of a release binding) buttons, as well as modifiers/container region, match those of a given binding. As the code to execute a binding is not very keyboard specific, keyboard_execute_command is renamed to seat_execute_command and moved to where the other binding handling functions are. The call to transaction_commit_dirty has been lifted out.
2018-07-23Address review comments on parse_booleanBrian Ashworth
2018-07-23Remove unneeded constBrian Ashworth
2018-07-23Switch to using a function to parse booleansBrian Ashworth
2018-07-23Parse mouse binding optionsfrsfnrrg
First, the existing sway_binding structure is given an enumerated type code. As all flags to bindsym/bindcode are boolean, a single uint32 is used to hold all flags. The _BORDER, _CONTENTS, _TITLEBAR flags, when active, indicate in which part of a container the binding can trigger; to localize complexity, they do not overlap with the command line arguments, which center around _TITLEBAR being set by default. The keyboard handling code is adjusted for this change, as is binding_key_compare; note that BINDING_LOCKED is *not* part of the key portion of the binding. Next, list of mouse bindings is introduced and cleaned up. Finally, the binding command parsing code is extended to handle the case where bindsym is used to describe a mouse binding rather than a keysym binding; the difference between the two may be detected as late as when the first key/button is parsed, or as early as the first flag. As bindings can have multiple keycodes/keysyms/buttons, mixed keysym/button sequences are prohibited.