aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree
Commit message (Collapse)AuthorAge
...
* Fix pango title escapingLibravatar emersion2018-11-25
| | | | | | | | | | | | | | This commit fixes two bugs. First, commit [1] has inverted the condition when we escape pango markup. We need to escape client-provided strings when markup is enabled. Second, parse_title_format has a shortcut when title_format is set to `%title`, and escape_pango_markup wasn't used anymore there. Fixes https://github.com/swaywm/sway/issues/3181 [1]: https://github.com/swaywm/sway/pull/3179/commits/caee2dff03fc007dc46cf121e013f5347ac46ba9
* Merge pull request #3179 from baloo/baloo/title_format-pango_markupLibravatar emersion2018-11-24
|\ | | | | fixes pango_markup support with title_format
| * fixes pango_markup support with title_formatLibravatar Arthur Gautier2018-11-24
| | | | | | | | | | | | | | The support for pango_markup was broken in title_format because the formated title was escaped. I think only the payload should be escaped. This commit fixes 789a877b379cd35c350610be62b971ae00feb542
* | Adding commands for configuring titlebar borders and paddingLibravatar Florent de Lamotte2018-11-22
|/
* Use #if instead of #ifdefLibravatar emersion2018-11-18
|
* Move view {x,y,width,height} into container structLibravatar Ryan Dwyer2018-11-17
| | | | | | | | | | | | | | | | | | | This renames/moves the following properties: * sway_view.{x,y,width,height} -> sway_container.content_{x,y,width,height} * This is required to support placeholder containers as they don't have a view. * sway_container_state.view_{x,y,width,height} -> sway_container_state.content_{x,y,width,height} * To remain consistent with the above. * sway_container_state.con_{x,y,width,height} -> sway_container_state.{x,y,width,height} * The con prefix was there to give it contrast from the view properties, and is no longer useful. The function container_set_geometry_from_floating_view has also been renamed to container_set_geometry_from_content.
* Allow multiple outputs for workspace outputLibravatar Brian Ashworth2018-11-11
| | | | | | | | | | | | `i3 4.16` allows users to list multiple outputs for a workspace and the first available will be used. The syntax is as follows: `workspace <workspace> output <outputs...>` Additionally when the workspace is created, the outputs get added to the output priority list in the order specified. This ensures that if a higher output gets connected, the workspace will move to the higher output. This works the same way as if the user had a workspace on an output, disconnected the output, and then later reconnected the output.
* Merge pull request #3087 from RedSoxFan/side-gapsLibravatar Ryan Dwyer2018-11-08
|\ | | | | Implement per side and per direction outer gaps
| * Implement per side and per direction outer gapsLibravatar Brian Ashworth2018-11-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces the following command extensions from `i3-gaps`: * `gaps horizontal|vertical|top|right|bottom|left <amount>` * `gaps horizontal|vertical|top|right|bottom|left all|current set|plus|minus <amount>` * `workspace <ws> gaps horizontal|vertical|top|right|bottom|left <amount>` `inner` and `outer` are also still available as options for all three of the above commands. `outer` now acts as a shorthand to set/alter all sides. Additionally, this fixes two bugs with the prevention of invalid gap configurations for workspace configs: 1. If outer gaps were not set and inner gaps were, the outer gaps would be snapped to the negation of the inner gaps due to `INT_MIN` being less than the negation. This took precedence over the default outer gaps. 2. Similarly, if inner gaps were not set and outer gaps were, inner gaps would be set to zero, which would take precedence over the default inner gaps. Fixing both of the above items also requires checking the gaps again when creating a workspace since the default outer gaps can be smaller than the negation of the workspace specific inner gaps.
* | gaps: remove duplicate inner gapsLibravatar Brian Ashworth2018-11-07
|/
* Fix #2992Libravatar mwenzkowski2018-11-01
| | | | Move a function call, such that data it depends on is initialized before.
* Move view marks properties to container structLibravatar Ryan Dwyer2018-11-01
| | | | | Like border properties, this will be needed to implement layout saving and restoring.
* Move view border properties to container structLibravatar Ryan Dwyer2018-10-31
| | | | | | This will be needed to implement layout saving and restoring, as we need to be able to configure borders on a placeholder container which has no view.
* Merge pull request #3031 from atomnuker/masterLibravatar Drew DeVault2018-10-31
|\ | | | | Restore previous tabbed layout behavior
| * Revert "Respect border settings when rendering lone tabbed/stacked child"Libravatar Rostislav Pehlivanov2018-10-30
| | | | | | | | This reverts commit 65328ef60c9468ae44b4b1d6316d604c47293ec3.
| * Revert "tree/view.c: fix uninitialized variables warning"Libravatar Rostislav Pehlivanov2018-10-30
| | | | | | | | This reverts commit 6414b5d288b89c9f3ecde0757f16184071b6036f.
* | Remove enum movement_directionLibravatar Ryan Dwyer2018-10-30
|/ | | | | | | | | There's no point having both movement_direction and wlr_direction. This replaces the former with the latter. As movement_direction also contained MOVE_PARENT and MOVE_CHILD items, these are now checked specifically in the focus command and handled in separate functions, just like the other focus variants.
* Merge pull request #3011 from Emantor/fix/2922Libravatar Drew DeVault2018-10-28
|\ | | | | output: initialize layers before usage in apply_config
| * output: initialize layers and signal before using functionsLibravatar Rouven Czerwinski2018-10-28
| | | | | | | | | | | | | | | | | | | | The previous pull request #2993 tried to fix this by moving the function which used the layers after the initilization. Since this initialization is done unconditionally only depending on the struct definition, move the layer initialization to the beginning of the function. Also move the signal initialization of the destroy event. Fixes #2992
* | Use output identifier for workspace configLibravatar Robinhuett2018-10-27
|/
* Revert "Fix #2992"Libravatar Drew DeVault2018-10-27
| | | | This reverts commit 94985146ea00b40f72cd6afaa191fd92a46e4fd3.
* tree/view.c: fix uninitialized variables warningLibravatar Cole Mickens2018-10-26
|
* Respect border settings when rendering lone tabbed/stacked childLibravatar Ryan Dwyer2018-10-27
| | | | | | | | | | | | In i3, when a child of a tabbed or stacked container has no siblings, its border settings are respected. This patch achieves the same effect by rendering a lone tabbed/stacked child as if it's a linear container. This makes the border settings be respected. Over in view_autoconfigure, we compensate for this by only adjusting `y_offset` if there's multiple children.
* Fix #2992Libravatar mwenzkowski2018-10-26
| | | | Move a function call, such that data it depends on is initialized before.
* Fix re-tiling for floating containersLibravatar Mihai Coman2018-10-25
| | | | | | When a floating container is tiled (e.g.: 'floating toggle' or 'floating disable'), it should be placed after/below the inactive focused container from the tiling layout.
* Rebase the cursor after applying transactionsLibravatar Ryan Dwyer2018-10-25
| | | | | | | | | | | | This approaches cursor rebasing from a different angle. Rather than littering the codebase with cursor_rebase calls and using transaction callbacks, this just runs cursor_rebase after applying every transaction - but only if there's outputs connected, because otherwise it causes a crash during shutdown. There is one known case where we still need to call cursor_rebase directly, and that's when running `seat seat0 cursor move ...`. This command doesn't set anything as dirty so no transaction occurs.
* Merge pull request #2950 from emersion/presentation-timeLibravatar Drew DeVault2018-10-25
|\ | | | | Implement the presentation-time protocol
| * Implement the presentation-time protocolLibravatar emersion2018-10-23
| |
* | Fix containers not being resized when entering scratchpadLibravatar Ryan Dwyer2018-10-25
| | | | | | | | | | | | | | | | | | This fixes a regression introduced by 662466e8db773926bf61b21280194a3540ae26ec. When adding a container to the scratchpad, setting container->scratchpad = true before container_set_floating made container_set_floating believe that the container was already floating. This fixes it by setting the property afterwards instead.
* | Merge pull request #2933 from Snaipe/xwayland-window-propertiesLibravatar Drew DeVault2018-10-24
|\ \ | |/ |/| xwayland: populate window_properties in json for views
| * xwayland: populate window_properties in json for viewsLibravatar Franklin "Snaipe" Mathieu2018-10-23
| | | | | | | | | | | | | | | | | | | | | | window_properties is documented to contain a subset of the X11 properties of a window (its title, class, instance, role, and transient ID). This commit adds the missing json object from the get_tree output for xwayland windows only. This is a follow-up of #2911. Signed-off-by: Franklin "Snaipe" Mathieu <me@snai.pe>
* | Fix crash when resizing container hidden in the scratchpadLibravatar Ryan Dwyer2018-10-23
| | | | | | | | | | | | | | | | Firstly, the container was wrongly identifying as a tiling container because it had no workspace. Secondly, when calculating the maximum possible size we can't use the workspace if it's not there, so we'll allow unlimited size in this case.
* | Fix crash when quitting a QT app on the wayland backend using menuLibravatar Ryan Dwyer2018-10-22
|/ | | | | | | | | | | QT unmaps the view before destroying the popup. We destroyed the popup in response to the view unmapping, but then we'd attempt to destroy it a second time which caused a crash. The patch removes the listener. I tested it with GTK as well, and can confirm the popup is still being destroyed.
* Make workspace back_and_forth seat-specificLibravatar Ryan Dwyer2018-10-21
| | | | | | | | * When using multiple seats, each seat has its own prev_workspace_name for the purpose of workspace back_and_forth. * Removes prev_workspace_name global variable. * Removes unused next_name_map function in tree/workspace.c. * Fixes memory leak in seat_destroy (seat was not freed).
* Merge pull request #2870 from RyanDwyer/refactor-input-managerLibravatar emersion2018-10-20
|\ | | | | Minor refactor of input manager
| * Minor refactor of input managerLibravatar Ryan Dwyer2018-10-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The input manager is a singleton object. Passing the sway_input_manager argument to each of its functions is unnecessary, while removing the argument makes it obvious to the caller that it's a singleton. This patch removes the argument and makes the input manager use server.input instead. On a similar note: * sway_input_manager.server is removed in favour of using the server global. * seat.input is removed because it can get it from server.input. Due to a circular dependency, creating seat0 is now done directly in server_init rather than in input_manager_create. This is because creating seats must be done after server.input is set. Lastly, it now stores the default seat name using a constant and removes a second reference to seat0 (in input_manager_get_default_seat).
* | Fix crash when view unmaps while no outputs connectedLibravatar Ryan Dwyer2018-10-20
|/ | | | | | | | | | | | | | | | | When a view unmaps, we call workspace_consider_destroy. This function assumed the workspace would always have an output, but this is not the case when hotplugged down to zero. The function now handles this and allows itself to be destroyed when there is no output. This means that workspace_begin_destroy must remove the workspace from the root->saved_workspaces list to avoid an eventual dangling pointer, so it does that now. Lastly, when an output is plugged in again and it has to create a new initial workspace for it, we must emit the workspace::init IPC event otherwise swaybar shows no workspaces at all. I guess when you start sway, swaybar is started after the workspace has been created which is why this hasn't been needed earlier.
* Introduce cursor_rebaseLibravatar Ryan Dwyer2018-10-19
| | | | | This function "rebases" the cursor on top of whatever is underneath it, without triggering any focus changes.
* Merge pull request #2820 from Emantor/fix-mouse-warping-containerLibravatar Drew DeVault2018-10-17
|\ | | | | Fix mouse warping container
| * view: rewarp cursor during view_unmapLibravatar Rouven Czerwinski2018-10-16
| | | | | | | | | | | | If the cursor is warped during the destruction of the workspace, we end up in the wrong position. Warp the cursor after arrange_workspace() so we end up in the correct position.
| * view: move arrange_workspace into view_mapLibravatar Rouven Czerwinski2018-10-16
| | | | | | | | | | | | | | | | | | | | For mouse_warping cursor to correctly work on newly spawned containers, the workspace needs to be arranged before the cursor is warped. The shell functions each implement their own fullscreen and arrange checks, move them into the view_map function and pass their states via boolean arguments. Fixes #2819
* | Introduce seat_set_raw_focus and remove notify argument from seat_set_focus_warpLibravatar Ryan Dwyer2018-10-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces seat_set_raw_focus: a function that manipulates the focus stack without doing any other behaviour whatsoever. There are a few places where this is useful, such as where we set focus_inactive followed by another call to set the real focus again. With this change, the notify argument to seat_set_focus_warp is also removed as these cases now use the raw function instead. A bonus of this is we are no longer emitting window::focus IPC events when setting focus_inactive, nor are we sending focus/unfocus events to the surface. This also fixes the following: * When running `move workspace to output <name>` and moving the last workspace from the source output, the workspace::focus IPC event is no longer emitted for the newly created workspace. * When splitting the currently focused container, unfocus/focus events will not be sent to the surface when giving focus_inactive to the newly created parent, and window::focus events will not be emitted.
* | Merge branch 'master' into fix_edge_gapsLibravatar Brian Ashworth2018-10-13
|\ \
| * | Fix crash when view maps while lockedLibravatar Ryan Dwyer2018-10-13
| |/ | | | | | | | | | | | | | | When locked, there is no active workspace so it must find the focus_inactive workspace instead. Additionally, this adds a check for if a view maps while there are no outputs connected and handles it gracefully.
* / fix_edge_gaps: Allow negative values for outer gaps.Libravatar Tarmack2018-10-13
|/ | | | While allowing negative values for the outer gaps it is still prevented that negative values move windows out of the container. This replaces the non-i3 option for edge_gaps.
* 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.
* Fix undesirable height change of floating viewsLibravatar mwenzkowski2018-10-09
| | | | | | | In view_autoconfigure the height of the view is adjusted if the parent container has a tabbed/stacked layout. Previously this height change would also be applied to floating views, although it is not needed for them.
* Only consider tiling views for gaps outerLibravatar Brian Ashworth2018-10-08
|
* Merge pull request #2772 from RyanDwyer/improve-popup-damageLibravatar Drew DeVault2018-10-09
|\ | | | | Only damage popups when popups have damage
| * Handle subsurfaces in view_child_damageLibravatar Ryan Dwyer2018-10-07
| |