Age | Commit message (Collapse) | Author |
|
|
|
|
|
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.
|
|
handle_layer_shell_surface: Do not crash if seat doesn't have focus
|
|
|
|
commands: prevent running empty seat command
|
|
|
|
start adding missing ipc properties
|
|
Fix gaps in title textures and vertically center them
|
|
|
|
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
Fix drag-and-drop
|
|
|
|
Fix workspace switching
|
|
The output also needs to be made dirty when focusing a new output.
|
|
Float views when min == max on either dimension
|
|
Don't dirty outputs unnecessarily
|
|
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.
|
|
|
|
Second attempt at restoring focus when closing a fullscreen view
|
|
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.
|
|
Make outputs dirty when changing focus
|
|
Fixes a workspace switch bug introduced by
5967ee1fbcba66ea57d971b924a51209a70d3aaa.
|
|
Introduce seat_set_focus_container and seat_set_focus_workspace
|
|
Fix crash when switching to new workspace during transaction
|
|
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.
|
|
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.
|
|
Fix management of bindings during reload
|
|
Fix crash when running "layout toggle"
|
|
The argc and argv used in this function are the same ones used by the
layout command itself.
|
|
Fix crash when focusing from fullscreen in an invalid direction
|
|
Fix crash when moving view across outputs
|
|
* 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.
|
|
Fix crash when views rapidly map and unmap
|
|
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.
|
|
Remove __PRETTY_FUNCTION__
|
|
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.
|
|
This is a non-standard extension as well as completely useless in C.
__func__ is the standard way of doing this.
|
|
Adjust container box
|
|
Restore focus correctly when closing a fullscreen view
|
|
We weren't calling seat_send_focus. I think this was previously called
by seat_set_focus_warp.
|
|
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.
|
|
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.
|
|
Call wlr_output_enable on enable/disable if needed
|
|
|
|
Implement type safe arguments and demote sway_container
|