This uses the new `view->outputs` bitset to calculate the intersection
with *all* outputs the view is currently visible on.
This ensures that the invisible resize handle works across outputs
while still making sure that it won't leak into neighboring ones just
because it is positioned closely to an output edge (either manually,
maximized or snapped via SnapToEdge or SnapToRegion).
Co-Authored-By: @johanmalm
Fixes: #1486
Reported-By: @lurch
...to edges actually encountered by motion during interactive moves and
resizes.
In addition, ignore edge resistance and attraction for minimized views.
A .desktop file was previously added for the labwc session, this adds a
badge for it where it is supported. The .desktop files and the badges
are also moved to `data/`.
Ref: #36, 9fa783e, labwc/labwc-artwork#7
...in view_move_to_edge. If a view is fully within the usable area of
its original output, it should be fully within the usable area (if
possible) on its new output.
This ensures that client-side decorations (and maybe other client
behaviors) behave intuitively during interative moves, but means that
drag to snapped position -> drag to maximize -> un-maximize
will put the window back to its natural geometry (saved before the first
snap) rather than back to the snapped position. This is a change in
behavior, but a) simplifies the logic a bit, because the tiled state is
always in sync with the window geometry and b) in some sense is "more
correct", because the window has been "visually" un-tiled the minute the
window starts dragging.
Note that maximizing using an action (including the button) a window
that has been snapped and then un-maximizing the window will put the
window back to the snapped position, as it always has.
This also fixes a bug wherein dragging a window and pressing a hot-key
to maximize or fullscreen a window could leave a snap-region highlight
visible after the interactive move was canceled.