Use an early return to avoid indenting the main logic instead of
wrapping the tail of a function in an if statement.
No functional change, except for a handful of places where printstatus()
was being called spuriously (tag, toggletag, toggleview).
ΔSLOC: 0
The scene graph implementation sends these for us, and it does so more
accurately than our overly-simplified approach. Layer shell surfaces
don't appear to receive these events at all, according to my
WAYLAND_DEBUG experiments with bemenu and dtao.
ΔSLOC: -4
If there is no current drag icon, this node will be empty, but we now
have `drag_icon != NULL` as an invariant. This allows us to eliminate a
conditional, since there's no harm in moving an empty node's coordinates
around with the pointer.
ΔSLOC: -1
If we treat the drag icon as distinct from other layers (it doesn't have
contents that are interactive, focusable, etc.), then we can iterate
over layers meaningfully with a simple for loop.
ΔSLOC: -8
while the size of `int` in most compilers is 32-bits, the size of int and all
other integer types are implementation defined, so make sure we can use up to
32-bits
- Replicate missing functionality from dwl to display the client count in monocle mode
- Add ltsymbol field to Monitor struct
- Display client count in monocle mode when greater than zero
- Tested with somebar and dwlb
selclient() does not work well when dealing newly mapped
clients (specifically those mapped on invisible tags).
This fixes various bugs related to things not working because selclient() would
return NULL.
References: 94c8bd6048
this also changes our policy about when we unset fullscreen:
dwl will unset fullscreen for clients who share tags (and monitor) with a newly
mapped client, it does not matter if the clients are visible or not
checking `bypass_surface_visibility` first, could cause that even if the idle
inhibitor is being destroyed it will disable idle tracking
and if we couldn't get its scene tree, then assume that the surface is visible