Commit Graph

5753 Commits

Author SHA1 Message Date
Ryan Dwyer
6deb726873 Fix crash when quitting a QT app on the wayland backend using menu
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.
2018-10-22 18:36:47 +10:00
Ryan Dwyer
f04b8f0061 Fix crash when moving a container to a fullscreen workspace
Setting normal focus to the fullscreen view causes the old workspace to
start destroying. We then set focus to the old workspace which is no
longer attached in the tree.

As we are only setting focus_inactive on the fullscreen container, the
fix uses seat_set_raw_focus to avoid all the additional behaviour that
comes with it such as destroying the old workspace.
2018-10-22 18:02:33 +10:00
Brian Ashworth
80e8be71a3 cmd_reload: recalc font sizing + rebuild textures
When the config gets reloaded, the font height and baseline get reset to
0. If the config does not have a font command in it, the variables will
remain at 0 causing a transparent area where the title would be
rendered.

This makes it so the font height and baseline are recalculated. Additionally,
since the font height and baseline may have changed due to the reload, the
title and marks textures are rebuilt.
2018-10-21 22:57:29 -04:00
Drew DeVault
a918844e52
Merge pull request #2913 from emersion/fix-swaybar-hotplug
swaybar: fix hotplug
2018-10-21 18:35:02 +02:00
emersion
2a32701b78
swaybar: fix hotplug 2018-10-21 17:46:40 +02:00
Drew DeVault
429787510e
Merge pull request #2909 from makepanic/issues/2906
Parse missing i3 window types
2018-10-21 16:40:53 +02:00
Christian
989bddc765 Parse missing i3 window types
fixes the parsing part of #2906
2018-10-21 15:59:04 +02:00
emersion
a4d6835881
Merge pull request #2903 from RyanDwyer/seat-specific-backandforth
Make workspace back_and_forth seat-specific
2018-10-21 08:59:59 +02:00
Ryan Dwyer
c5a6c37275 Make workspace back_and_forth seat-specific
* 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).
2018-10-21 11:26:22 +10:00
emersion
3f02218b54
Merge pull request #2901 from ianyfan/swaybar
swaybar: render with minimum height, nominally text height
2018-10-20 22:52:56 +02:00
Ian Fan
1844a5bafb swaybar: render with minimum height, nominally text height 2018-10-20 21:21:57 +01:00
Drew DeVault
6e6476c3d5
Merge pull request #2900 from Hi-Angel/master
A script to make inactive windows transparent
2018-10-20 21:06:38 +02:00
Konstantin Kharlamov
0d5aaf5359 A script to make inactive windows transparent
Sway has ability to apply transparency to arbitrary windows. This script
wires up this functional to one of popular use-cases from
i3+<compositor_name>.

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
2018-10-20 21:58:00 +03:00
Drew DeVault
a41b77ef29
Merge pull request #2896 from RyanDwyer/abort-proprietary
Abort if proprietary drivers are in use
2018-10-20 16:18:58 +02:00
Ryan Dwyer
ebeb759873 Abort if proprietary drivers are in use
The idea here is we don't want users to be blissfully unaware that they
are running unsupported drivers. So we abort on startup, and force the
user to add a specific argument to bypass the check.
2018-10-21 00:01:09 +10:00
Drew DeVault
64534d2fd1
Merge pull request #2895 from RyanDwyer/fix-popup-damage
Fix popup damage issues when toplevel and/or popup uses geometry
2018-10-20 15:38:25 +02:00
Drew DeVault
551e05ba90
Merge pull request #2888 from RyanDwyer/remove-raise-floating
Remove raise_floating directive
2018-10-20 15:30:54 +02:00
Ryan Dwyer
93ec1af4d9 Fix popup damage issues when toplevel and/or popup uses geometry
The wlr_xdg_popup_get_toplevel_coords function has the following quirks:

* It does not do anything with the coordinates of the passed popup.
Instead, we are required to add them ourselves, which we do by passing
them to the function as the surface local values.
* It adds the geometry (shadows etc) of the toplevel itself, so the
coordinates are surface local rather than content local. For this
reason, we have to negate the toplevel's geometry
(child->view->geometry).
* I may be wrong, but the popup positions appear to be stored in surface
local coordinates rather than content local coordinates. The geometry
(shadows etc) of the popup itself must be negated (surface->geometry).
2018-10-20 23:18:56 +10:00
Drew DeVault
c75098e96f
Merge pull request #2887 from RyanDwyer/bar-overlay
Put swaybar in overlay layer when using mode hide
2018-10-20 15:17:51 +02:00
Ryan Dwyer
cafb1ff4f7
Merge pull request #2890 from mihaicmn/create-default-seat
Fix crash when defaut seat is not created
2018-10-20 19:43:58 +10:00
Mihai Coman
3daf963d4d Fix crash when defaut seat is not created
Function input_manager_get_default_seat should always return a seat.
2018-10-20 11:48:49 +03:00
Ryan Dwyer
b9b1b0e566 Remove raise_floating directive
The directive controlled whether floating views should raise to the top
when the cursor is moved over it while using focus_follows_mouse. The
default was enabled, which is undesirable. For example, if you have two
floating views where one completely covers the other, the smaller one
would be inaccessible because moving the mouse over the bigger one would
raise it above the smaller one.

There is no known use case for having raise_floating enabled, so this
patch removes the directive and implements the raise_floating disabled
behaviour instead.
2018-10-20 17:51:32 +10:00
Ryan Dwyer
a4ce5227c2 Put swaybar in overlay layer when using mode hide
This allows the bar to render over fullscreen views.
2018-10-20 16:48:43 +10:00
emersion
75ea19c71b
Merge pull request #2870 from RyanDwyer/refactor-input-manager
Minor refactor of input manager
2018-10-20 08:42:56 +02:00
emersion
fe6aea1d02
Merge pull request #2886 from RyanDwyer/fix-headless-unmap-crash
Fix crash when view unmaps while no outputs connected
2018-10-20 08:37:48 +02:00
emersion
4bde0eb911
Merge pull request #2879 from Emantor/fix/swaybar_position
swaybar: disallow left and right position and print error on default
2018-10-20 08:35:20 +02:00
Rouven Czerwinski
17fb3b6994 commands/bar: remove left and right from allowed positions
"left" and "right" are not allowed positions for swaybar, remove them.
2018-10-20 08:21:44 +02:00
Rouven Czerwinski
f52825336c swaybar: disallow left and right position and print error on default
The positions "left" and "right" are not allowed by the man page, remove them
from the allowed positions. Also print an error to stderr if we default to the
bottom position.

Fixes #2878
2018-10-20 08:21:44 +02:00
Ryan Dwyer
c006717910 Minor refactor of input manager
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).
2018-10-20 13:11:43 +10:00
Ryan Dwyer
ed771a6a6e Fix crash when view unmaps while no outputs connected
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.
2018-10-20 13:07:33 +10:00
Drew DeVault
5b8257b88f
Merge pull request #2872 from RyanDwyer/cursor-rebase
Introduce cursor_rebase
2018-10-20 05:06:03 +02:00
Drew DeVault
3b8dd49583
Merge pull request #2885 from RyanDwyer/fix-tiling-drag-crash
Fix crash when ending tiling drag
2018-10-20 01:18:23 +02:00
Drew DeVault
bb6c9f52c7
Merge pull request #2884 from c-edw/feature/2867_FixScalingParameter
Prevent overriding background mode after it's been set.
2018-10-20 01:16:24 +02:00
Ryan Dwyer
9b828939e5 Fix crash when ending tiling drag
If the container being dragged has a parent that needs to be reaped, it
must be reaped after we've reinserted the dragging container into the
tree. During reaping, handle_seat_node_destroy tries to refocus the
dragging container which isn't possible while it's detached.
2018-10-20 08:57:09 +10:00
Connor E
d855837da2 Change initial background mode before arg parse. 2018-10-19 16:38:01 +01:00
emersion
0a4735c50c
Merge pull request #2883 from ponkyh/missing-stdlib
missing headers for swaybar/input.c
2018-10-19 15:18:05 +02:00
ossi.ahosalmi
79011e68df missing headers for swaybar/input.c 2018-10-19 15:55:30 +03:00
Ryan Dwyer
9ea71f292b Introduce cursor_rebase
This function "rebases" the cursor on top of whatever is underneath it,
without triggering any focus changes.
2018-10-19 22:47:54 +10:00
Drew DeVault
28f3b8cb03
Merge pull request #2882 from RyanDwyer/fix-mouse-warp-logic
Fix logic used for mouse_warping output
2018-10-19 14:40:56 +02:00
Ryan Dwyer
4d743b64d0 Fix logic used for mouse_warping output
Turns out we don't need to store the previous focus, and it should be
based on which output the cursor was in.
2018-10-19 22:28:02 +10:00
Drew DeVault
96e3686ae8
Merge pull request #2875 from RedSoxFan/input-device-bindings
cmd_bind{sym,code}: Implement per-device bindings
2018-10-19 14:00:03 +02:00
Drew DeVault
19adc3ff2d
Merge pull request #2877 from RyanDwyer/warp-on-workspace-switch
Consider cursor warp when switching workspaces
2018-10-19 02:49:13 +02:00
Ryan Dwyer
a2fdac2c4b Consider cursor warp when switching workspaces
Fixes a regression introduced in
24a90e5d86.

consider_warp_to_focus has been renamed to seat_consider_warp_to_focus,
moved to seat.c and made public. It is now called when switching
workspaces via `workspace <ws>`.
2018-10-19 08:00:13 +10:00
Brian Ashworth
2e637b7368 cmd_bind{sym,code}: Implement per-device bindings
bindsym --input-device=<identifier> ...
bindcode --input-device=<identifier> ...
2018-10-18 13:42:01 -04:00
Brian Ashworth
30dbb8eba0
Merge pull request #2874 from ianyfan/swaybar
swaybar: separate input code to new file
2018-10-18 13:37:35 -04:00
Ian Fan
499150a91b swaybar: separate input code to new file 2018-10-18 14:19:00 +01:00
Drew DeVault
d88b7a63f4
Merge pull request #2871 from RyanDwyer/untangle-cursor-warp
Remove cursor warping from seat_set_focus
2018-10-18 15:18:41 +02:00
Ryan Dwyer
24a90e5d86 Remove cursor warping from seat_set_focus
Because cursor warping was the default behaviour in seat_set_focus,
there may be cases where we may have been warping the cursor
unintentionally. This patch removes cursor warping from seat_set_focus
and only does it in the focus command. This is managed by a static
function in focus.c.

To know whether to warp or not, we need to know which node had focus
previously. To keep track of this easily, seat->prev_focus has been
introduced and is set to the previous in seat_set_focus.
2018-10-18 23:08:45 +10:00
Drew DeVault
103b7bc47d
Merge pull request #2868 from emersion/xcursor-env
Export XCURSOR_SIZE and XCURSOR_THEME
2018-10-17 22:19:01 +02:00
emersion
fd9198a3a4 Export XCURSOR_SIZE and XCURSOR_THEME
These can be used by toolkits (currently Qt, libxcursor, glfw) to
choose a default cursor theme and size.

This backports this rootston commit:
3a181ab430
2018-10-17 21:10:30 +02:00