aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-09-05Fix output position issueRyan Dwyer
Looks like the output dimensions need to be set when arranging rather than when a mode is set. Fixes an issue with position of fullscreen views.
2018-09-05Fix another focus bug when moving into outputRyan Dwyer
Find the focused_inactive view rather than possibly selecting a parent.
2018-09-05Fix focus bugRyan Dwyer
When changing focus from a view in one workspace to an empty workspace using `focus <direction>`, the view in the previous workspace would keep focused styling. This is because the check to unfocus it was only done in the container case and not workspace case, so it's been moved out of both.
2018-09-05Fix swaybars with no defined outputRyan Dwyer
2018-09-05Fix crash when moving mouse over a fullscreen split containerRyan Dwyer
2018-09-05Fix moving workspace to outputRyan Dwyer
2018-09-05Update output propertes on mode changeRyan Dwyer
This was previously done when arranging the output, but only needs to be done on mode change.
2018-09-05Fix mouse_warpingRyan Dwyer
2018-09-05Apply default config to outputRyan Dwyer
When starting without any output config, the default config was not applying.
2018-09-05Remove offset argument to container_add_siblingRyan Dwyer
I added this thinking that it might come in useful. Turns out it didn't.
2018-09-05Fix crash when focus hits edge of rootRyan Dwyer
2018-09-05Don't use wlr_output propertiesRyan Dwyer
These properties are before rotation.
2018-09-05Implement type safe arguments and demote sway_containerRyan Dwyer
This commit changes the meaning of sway_container so that it only refers to layout containers and view containers. Workspaces, outputs and the root are no longer known as containers. Instead, root, outputs, workspaces and containers are all a type of node, and containers come in two types: layout containers and view containers. In addition to the above, this implements type safe variables. This means we use specific types such as sway_output and sway_workspace instead of generic containers or nodes. However, it's worth noting that in a few places places (eg. seat focus and transactions) referring to them in a generic way is unavoidable which is why we still use nodes in some places. If you want a TL;DR, look at node.h, as well as the struct definitions for root, output, workspace and container. Note that sway_output now contains a workspaces list, and workspaces now contain a tiling and floating list, and containers now contain a pointer back to the workspace. There are now functions for seat_get_focused_workspace and seat_get_focused_container. The latter will return NULL if a workspace itself is focused. Most other seat functions like seat_get_focus and seat_set_focus now accept and return nodes. In the config->handler_context struct, current_container has been replaced with three pointers: node, container and workspace. node is the same as what current_container was, while workspace is the workspace that the node resides on and container is the actual container, which may be NULL if a workspace itself is focused. The global root_container variable has been replaced with one simply called root, which is a pointer to the sway_root instance. The way outputs are created, enabled, disabled and destroyed has changed. Previously we'd wrap the sway_output in a container when it is enabled, but as we don't have containers any more it needs a different approach. The output_create and output_destroy functions previously created/destroyed the container, but now they create/destroy the sway_output. There is a new function output_disable to disable an output without destroying it. Containers have a new view property. If this is populated then the container is a view container, otherwise it's a layout container. Like before, this property is immutable for the life of the container. Containers have both a `sway_container *parent` and `sway_workspace *workspace`. As we use specific types now, parent cannot point to a workspace so it'll be NULL for containers which are direct children of the workspace. The workspace property is set for all containers, except those which are hidden in the scratchpad as they have no workspace. In some cases we need to refer to workspaces in a container-like way. For example, workspaces have layout and children, but when using specific types this makes it difficult. Likewise, it's difficult for a container to get its parent's layout when the parent could be another container or a workspace. To make it easier, some helper functions have been created: container_parent_layout and container_get_siblings. container_remove_child has been renamed to container_detach and container_replace_child has been renamed to container_replace. `container_handle_fullscreen_reparent(con, old_parent)` has had the old_parent removed. We now unfullscreen the workspace when detaching the container, so this function is simplified and only needs one argument now. container_notify_subtree_changed has been renamed to container_update_representation. This is more descriptive of its purpose. I also wanted to be able to call it with whatever container was changed rather than the container's parent, which makes bubbling up to the workspace easier. There are now state structs per node thing. ie. sway_output_state, sway_workspace_state and sway_container_state. The focus, move and layout commands have been completely refactored to work with the specific types. I considered making these a separate PR, but I'd be backporting my changes only to replace them again, and it's easier just to test everything at once.
2018-09-04Merge pull request #2569 from RyanDwyer/deny-reload-repeatDrew DeVault
Deny repeating reload by holding key
2018-09-04Deny repeating reload by holding keyRyan Dwyer
Fixes #2568 The binding that gets stored in the keyboard's `repeat_binding` would get freed on reload, leaving a dangling pointer. Rather than attempt to unset the keyboard's `repeat_binding` along with the other bindings, I opted to just not set it for the reload command because there's no point in reloading repeatedly by holding the binding. This disables repeat bindings for the reload command. As we now need to detect whether it's a reload command in two places, I've added a binding flag to track whether it's a reload or not.
2018-09-03Merge pull request #2561 from RyanDwyer/window-role-criteriaDrew DeVault
Implement window_role criteria token
2018-09-04Implement window_role criteria tokenRyan Dwyer
Depends on https://github.com/swaywm/wlroots/pull/1226
2018-09-03Merge pull request #2564 from ppascher/masterDrew DeVault
Fix window_type with disabled xwayland support
2018-09-03Merge pull request #2542 from sghctoma/fix-freebsd-buildDrew DeVault
FreeBSD fixes
2018-09-03Merge pull request #2563 from taiyu-len/fix/misaligned-pointer-accessDrew DeVault
fix misaligned integer stores/loads
2018-09-03Merge pull request #2565 from ianyfan/fix-splashscreen-crashemersion
Fix crash when a splash screen opens on an empty workspace
2018-09-03Fix crash when a splash screen opens on an empty workspaceIan Fan
2018-09-03move criteria "instance", "class" and "window_role" inside HAVE_XWAYLAND ifdefs"Pascal Pascher
2018-09-03fix window_type with disabled xwayland supportPascal Pascher
2018-09-03Fixed window_type with disabled xwayland support.Pascal Pascher
2018-09-03Change _XOPEN_SOURCE defines to _POSIX_C_SOURCEsghctoma
2018-09-03Merge remote-tracking branch 'upstream/master' into fix-freebsd-buildsghctoma
2018-09-03Merge pull request #2553 from emersion/disabled-no-modesetBrian Ashworth
Do not modeset disabled outputs
2018-09-03Merge branch 'master' into disabled-no-modesetBrian Ashworth
2018-09-02prevent ub caused by misaligned stores/loadstaiyu
2018-09-02Merge pull request #2562 from RyanDwyer/ld-library-pathemersion
Add meson option for LD_LIBRARY_PATH
2018-09-02Merge pull request #2560 from RyanDwyer/focus-on-window-activationemersion
Implement focus_on_window_activation
2018-09-02Add ld-library-path meson optionRyan Dwyer
2018-09-02Use dashes in meson option namesRyan Dwyer
2018-09-02Rename fowa enum and use switch in view_request_activateRyan Dwyer
2018-09-02Implement focus_on_window_activationRyan Dwyer
Depends on https://github.com/swaywm/wlroots/pull/1223
2018-09-02Merge pull request #2559 from RyanDwyer/xwayland-check-modalemersion
Check modal state when determining whether an xwayland view should float
2018-09-02Check modal state when determining whether an xwayland view should floatRyan Dwyer
Depends on https://github.com/swaywm/wlroots/pull/1222. I don't know of a program that sets the state to modal without setting the window type, but I know the modal property works because logging the property shows it's true for the Firefox Open File dialog.
2018-09-02Merge pull request #2554 from emersion/init-dmabuf-global-in-rendereremersion
Update for swaywm/wlroots#1216
2018-09-01Update for swaywm/wlroots#1216emersion
2018-09-01Merge pull request #2544 from RyanDwyer/fix-deferred-cmd-crashDrew DeVault
Fix crash when running deferred commands
2018-09-01Do not modeset disabled outputsemersion
2018-09-01Merge pull request #2547 from RyanDwyer/fix-reload-crashDrew DeVault
Fix crash on reload
2018-09-01Merge pull request #2549 from RyanDwyer/border-improvementsDrew DeVault
Implement deprecated new_window and new_float commands
2018-09-01Merge pull request #2550 from RyanDwyer/window-type-criteriaDrew DeVault
Implement window_type criteria token
2018-09-01Implement window_type criteria tokenRyan Dwyer
2018-09-01Implement deprecated new_window and new_float commandsRyan Dwyer
May as well make it as easy as possible for users who are coming from i3. This also changes the `border` command to accept a thickness when setting the border to normal. This makes it work the same way as the `default_border` command. Eg. `border normal 5`
2018-09-01Allow reload command to exist anywhere in the command stringRyan Dwyer
This fixes a crash if you have commands where reload appears in the middle or at the end, such as `bindsym r mode default, reload`.
2018-09-01Fix crash on reloadRyan Dwyer
If sway is reloaded using a bindsym which has multiple commands, it failed to detect the reload command, didn't create a duplicate of the binding and would crash because the reload command frees the bindings. For example: mode system { bindsym r reload, mode default } In this example, the binding->command is "reload, mode default". Fixes #2545
2018-08-31Merge pull request #2546 from RyanDwyer/fix-transaction-spammingemersion
Don't send never-ending transactions when a focused layer surface commits