Commit graph

5236 commits

Author SHA1 Message Date
Rouven Czerwinski
1f0aeae335 view: rewarp cursor during view_unmap
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.
2018-10-16 15:47:02 +02:00
Rouven Czerwinski
d69cf4c23c seat: use new warping functions for cursor warping during focus warp 2018-10-16 15:47:02 +02:00
Rouven Czerwinski
0969bf758b cursor: functions to warp cursor to container and workspace
The new functions allow a cursor to be warped without changing the focus.
This is a preparation commit to handle cursor warping not only in
seat_set_focus_warp.
2018-10-16 15:47:02 +02:00
Rouven Czerwinski
892446a0b6 view: move arrange_workspace into view_map
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
2018-10-16 15:47:02 +02:00
Ryan Dwyer
d0974d5c50 Fix crash when using workspace back_and_forth with no previous 2018-10-16 23:42:53 +10:00
Ian Fan
113751ea48
Merge pull request #2836 from RyanDwyer/set-set-raw-focus
Introduce seat_set_raw_focus and remove notify argument from seat_set_focus_warp
2018-10-16 10:59:09 +01:00
Ian Fan
ac20690945
Merge branch 'master' into set-set-raw-focus 2018-10-16 10:50:56 +01:00
Ryan Dwyer
05284b65db Prevent duplicate workspace::focus events
Previously we would compare the last focus's workspace with the new
focus's workspace to determine if we need to emit an IPC
workspace::focus event. This doesn't work when moving the focused
container to a new workspace.

This adds a workspace property to the seat which stores the last emitted
workspace::focus workspace. Using this method, after moving the
container, refocusing it will trigger exactly one workspace::focus
event: from the old workspace to the new workspace.
2018-10-16 08:17:24 +10:00
Drew DeVault
cd02d60a99
Merge pull request #2845 from colemickens/posix_clock
common/loop.c: add _POSIX_C_SOURCE for clock_gettime and CLOCK_MONOTONIC
2018-10-15 23:01:53 +02:00
Cole Mickens
a9a9df75ec common/loop.c: add _POSIX_C_SOURCE for clock_gettime and CLOCK_MONOTONIC 2018-10-15 13:42:24 -07:00
Drew DeVault
4e4b922d79
Merge pull request #2839 from RyanDwyer/swaylock-version
Fix swaylock version string
2018-10-15 21:30:53 +02:00
Ryan Dwyer
e644632198 Fix swaylock version string
The referenced constants were not defined so it always printed "version
unknown".

Also it would exit with code 1. It now exits with code 0.
2018-10-16 00:09:16 +10:00
Drew DeVault
f6ad4908bc
Merge pull request #2838 from RyanDwyer/compositor-unavailable-crash
Sway clients: Exit gracefully when compositor is unavailable
2018-10-15 15:37:17 +02:00
Drew DeVault
97b9452171
Merge pull request #2835 from RyanDwyer/swap-crash
Fix crash in swap command
2018-10-15 15:35:50 +02:00
Ryan Dwyer
32ba8154b8 Sway clients: Exit gracefully when compositor is unavailable 2018-10-15 21:57:59 +10:00
Ryan Dwyer
26278b694c Introduce seat_set_raw_focus and remove notify argument from seat_set_focus_warp
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.
2018-10-15 21:06:24 +10:00
Ryan Dwyer
fe803b89a7 Fix crash in swap command
When swapping containers that are in the root of the workspace, parent
will be NULL.
2018-10-15 19:40:40 +10:00
Drew DeVault
56c388b510
Merge pull request #2831 from swaywm/move-output-docs
Establish sway-output(5)
2018-10-14 17:04:55 +02:00
Drew DeVault
b69060fc58 Establish sway-output(5) 2018-10-14 10:52:57 -04:00
Drew DeVault
53d90dd6a8
Merge pull request #2826 from RyanDwyer/common-eventloop
Implement common event loop for swaybar and swaylock
2018-10-14 16:34:22 +02:00
Drew DeVault
135f0fc7e7 Update README.MD (and README.*.md) 2018-10-14 10:33:38 -04:00
Ryan Dwyer
c6f153d8f9 Event loop: Fix memmove and remove extraneous declaration 2018-10-15 00:26:27 +10:00
Ryan Dwyer
893f61d03a Event loop: Free fds and fix race condition 2018-10-15 00:26:27 +10:00
Ryan Dwyer
6921fdc6d6 Remove timerfd from loop implementation
timerfd doesn't work on the BSDs, so this replaces it with a timespec
for the expiry and uses a poll timeout to check the timers when needed.
2018-10-15 00:26:27 +10:00
Ryan Dwyer
f98f351a52 swaylock: Don't wait too long for surface damage before verifying 2018-10-15 00:26:27 +10:00
Ryan Dwyer
fa11b7f701 swaylock: clear password after 10 seconds 2018-10-15 00:26:27 +10:00
Ryan Dwyer
c242712262 swaylock: Remove indicator after 3 seconds 2018-10-15 00:26:27 +10:00
Ryan Dwyer
9c833c661a swaylock: Use common event loop 2018-10-15 00:26:27 +10:00
Ryan Dwyer
4056c09e13 Move swaybar's event loop to common directory and refactor
* The loop functions are now prefixed with `loop_`.
* It is now easy to add timers to the loop.
* Timers are implemented using pollfd and timerfd, rather than manually
checking them when any other event happens to arrive.
2018-10-15 00:26:27 +10:00
Drew DeVault
7f2e6d812a Document border csd 2018-10-14 10:23:40 -04:00
Drew DeVault
4a05fbf8ab
Merge pull request #2751 from ianyfan/swaybar
Bar mode/hidden_state events
2018-10-14 15:13:50 +02:00
Ian Fan
85dd36e92b swaybar: add documentation for hide/hidden_state subcommands 2018-10-14 13:33:12 +01:00
Ian Fan
4dba7c084a swaybar: when hiding bar, save old height to be restored upon reshow
Previously, when the bar was hidden, the height would be set to 0.
This meant that if the bar was empty upon reshow, it would not render
since the height was still 0, which made it seem there was a problem.
Now, the height is not reset, but the width is, to indicate upon reshow
that the layer surface needed reconfiguring.
2018-10-14 13:33:12 +01:00
Ian Fan
a29ee77411 swaybar: send signal to status when hiding or showing bar 2018-10-14 13:33:12 +01:00
Ian Fan
f6f72cb949 swaybar: show hidden bar on urgency 2018-10-14 13:33:12 +01:00
Ian Fan
2f1fd80726 swaybar: show hidden bar on key event
Since wayland does not currently allow swaybar to create global
keybinds, this is handled within sway and sent to the bar using a custom
event, so as not to pollute existing events, called bar_state_update.
2018-10-14 13:33:12 +01:00
Ian Fan
bcc61e5147 swaybar: handle mode/hidden_state changes
As well as adding the hidden_state property to the bar config struct,
this commit handles barconfig_update events when the mode or
hidden_state changes, and uses a new function determine_bar_visibility
to hide or show the bar as required, using, respectively,
destroy_layer_surface, which is also newly added, and add_layer_surface,
which has been changed to allow dynamically adding the surface.
2018-10-14 13:33:12 +01:00
Ian Fan
55ca16f2d8 swaybar: streamline ipc handling
The received json is handled outside of the case statement, which will
allow better extensibility.
This commit also introduces the variable bar_is_dirty, the return value
signifying whether the bar requires rendering.
2018-10-14 13:33:12 +01:00
Ian Fan
fed11d1c7b swaybar: move mode & mode_pango_markup to bar struct
This distinguishes the binding mode from the distinct config mode, as
well as removing mode_pango_markup from the config struct where it
should not be present.
2018-10-14 13:33:12 +01:00
Ian Fan
a388ffa127 swaybar: only send initial workspace request if workspace buttons are enabled 2018-10-14 13:33:12 +01:00
Ian Fan
19f0bf3864 swaybar: add free_hotspots helper function 2018-10-14 13:33:12 +01:00
Ian Fan
a67fa8a05d swaybar: only subscribe to required events
This adds barconfig_update to the list of subscribed events, as well as
checking when the other events need to be subscribed to.
2018-10-14 13:33:12 +01:00
Ian Fan
18eaf45224 swaybar: annotate wl_list properties in definitions 2018-10-14 13:33:12 +01:00
Ian Fan
d0b54e932b swaybar: save id upon startup
This adds an id property to the bar, which will be used to filter
barconfig_update events
2018-10-14 13:33:12 +01:00
Ian Fan
1f90f92f45 commands: fix sending bar mode/hidden_state updates to all bars
Previously, if a change was sent to all bars, it would only actually
change the first bar it encountered, due to return value handling
2018-10-14 13:33:12 +01:00
Drew DeVault
abde9d6627
Merge pull request #2808 from RedSoxFan/bar-subcommands
Fix bar subcommand handler structs and selection
2018-10-14 14:30:52 +02:00
Drew DeVault
dbb169bf15
Merge pull request #2829 from espkk/master
Fix clear_password_buffer
2018-10-14 14:30:06 +02:00
espkk
42f72f8bb4 swaylock: fix clear_password_buffer 2018-10-14 07:40:33 +03:00
Drew DeVault
71aaa7e130 Remove unnecessary comment 2018-10-13 20:51:29 -04:00
Brian Ashworth
350f7d3460
Merge pull request #2823 from tarmack/fix_edge_gaps
Fix edge gaps
2018-10-13 18:49:31 -04:00