swayfx/sway/commands
Ryan Dwyer 0f6d212629 Send output enter/leave events correctly
Previously we used a reparent event to detect when a view changes
parent, then sent an output enter/leave to the surfaces if needed. This
worked for tiling views but not floating views, as floating views can
intersect another output without changing parent.

The solution implemented for floating views also applies cleanly to
tiling views, so the previous method has been completely replaced and
the reparent event has been removed.

This introduces a new function container_discover_outputs. This function
compares the container's `current` position to the outputs, sends enter
and leave events as needed, and keeps track of which outputs it's
intersecting in a new `container->outputs` list. If it has entered a new
output with a different scale then the title and marks textures will
also be recreated at the new scale.

The function is called when a transaction applies. This is convenient as
it means we don't have to call it from various places.

There is imperfect rendering when a floating view overlaps two outputs
with different scales. It renders correctly for the most recently
entered output, but there is only one title texture so it renders
incorrectly on the old output.

Fixes #2482
2018-08-20 09:23:24 +10:00
..
bar bar: free old position when changing 2018-07-15 21:47:22 +01:00
input Add xkb_numlock/xkb_capslock commands (#2311) 2018-07-25 17:24:45 +02:00
output Don't call swaynag_log for bg when not reading 2018-08-08 17:04:12 -04:00
seat Fix border commands from changing focus 2018-05-20 23:12:33 -04:00
assign.c commands: complete assign command 2018-08-18 17:25:06 +01:00
bar.c Update for swaywm/wlroots#1126 2018-07-09 22:54:30 +01:00
bind.c ipc: add binding event 2018-08-01 16:57:15 +01:00
border.c Simplify transactions by utilising a dirty flag on containers 2018-07-14 23:14:55 +10:00
client.c Convert border_colors.text to float[4] 2018-05-03 08:14:17 -04:00
default_border.c Allow setting border widths for normal borders using default_border. 2018-05-10 23:35:37 -07:00
default_floating_border.c Implement default_floating_border command and adjust CSD behaviour 2018-07-17 10:14:33 +10:00
default_orientation.c Add default_orientation command 2018-03-30 10:43:55 -04:00
exec.c Update for swaywm/wlroots#1126 2018-07-09 22:54:30 +01:00
exec_always.c commands: handle quoted exec command 2018-08-18 15:50:26 +01:00
exit.c remove checks for command handlers 2018-02-24 13:22:57 -05:00
floating.c Replace hacky L_FLOATING container with a list 2018-08-19 16:18:33 +10:00
floating_minmax_size.c Implement floating_minimum_size and floating_maximum_size 2018-07-11 22:16:48 +10:00
floating_modifier.c Implement floating_modifier <mod> [inverse|normal] 2018-07-24 18:41:08 -04:00
focus.c Replace hacky L_FLOATING container with a list 2018-08-19 16:18:33 +10:00
focus_follows_mouse.c Switch to using a function to parse booleans 2018-07-23 21:33:17 -04:00
focus_wrapping.c Address review comments on parse_boolean 2018-07-23 21:37:53 -04:00
font.c Implement pango support 2018-05-06 08:25:22 +10:00
for_window.c Update for swaywm/wlroots#1126 2018-07-09 22:54:30 +01:00
force_display_urgency_hint.c Fix urgent timer logic and remove unnecessary header includes 2018-07-21 10:28:07 +10:00
force_focus_wrapping.c Switch to using a function to parse booleans 2018-07-23 21:33:17 -04:00
fullscreen.c Rename container_sort_workspaces and container_wrap_children 2018-08-18 22:02:03 +10:00
gaps.c Simplify transactions by utilising a dirty flag on containers 2018-07-14 23:14:55 +10:00
hide_edge_borders.c Implement iterators per container type 2018-08-18 23:38:54 +10:00
include.c Write to swaynag pipe fd directly on config errors 2018-08-03 10:37:35 -04:00
input.c Restrict CapsLock and NumLock commands to the configuration file 2018-07-25 17:24:45 +02:00
kill.c address feedback 2018-04-03 19:23:59 -04:00
layout.c commands: fix layout implementation (also better name for previous split layout) 2018-08-06 14:17:58 +01:00
mark.c ipc: add window::mark event 2018-08-01 16:57:15 +01:00
mode.c Create list for mouse binds when creating new mode 2018-07-31 23:49:42 -04:00
mouse_warping.c Implement mouse warping 2018-03-31 13:05:45 -04:00
move.c Send output enter/leave events correctly 2018-08-20 09:23:24 +10:00
no_focus.c Implement no_focus command 2018-07-16 22:18:12 +10:00
nop.c commands: add nop 2018-08-18 15:50:26 +01:00
opacity.c Simplify damage tracking functions, use them in layer shell 2018-04-06 11:45:40 -04:00
output.c Reset outputs on reload 2018-07-20 22:17:20 -04:00
reload.c Write to swaynag pipe fd directly on config errors 2018-08-03 10:37:35 -04:00
rename.c commands: saner workspace number handling 2018-08-18 17:25:06 +01:00
resize.c Implement resizing tiled containers via cursor 2018-08-12 10:45:54 +10:00
scratchpad.c Replace hacky L_FLOATING container with a list 2018-08-19 16:18:33 +10:00
seat.c Address first round of review for generic blocks 2018-06-02 08:07:44 -04:00
set.c commands: require set variable to start with $ 2018-08-18 15:50:26 +01:00
show_marks.c Implement iterators per container type 2018-08-18 23:38:54 +10:00
smart_gaps.c Simplify transactions by utilising a dirty flag on containers 2018-07-14 23:14:55 +10:00
split.c Allow splitting a floating view 2018-07-28 22:41:04 +10:00
sticky.c commands: move newly-stickied containers to focused workspace 2018-08-18 18:29:18 +01:00
swap.c Replace hacky L_FLOATING container with a list 2018-08-19 16:18:33 +10:00
swaybg_command.c Update for swaywm/wlroots#1126 2018-07-09 22:54:30 +01:00
swaynag_command.c Write to swaynag pipe fd directly on config errors 2018-08-03 10:37:35 -04:00
title_format.c Move code for re-arranging after font height change into a common place 2018-05-05 22:29:37 +10:00
unmark.c Implement iterators per container type 2018-08-18 23:38:54 +10:00
urgent.c Switch to using a function to parse booleans 2018-07-23 21:33:17 -04:00
workspace.c commands: saner workspace number handling 2018-08-18 17:25:06 +01:00
workspace_layout.c Implement config parser for workspace_layout 2018-05-28 22:55:06 -04:00
ws_auto_back_and_forth.c Add workspace_auto_back_and_forth command 2018-04-08 16:44:59 +02:00