wlroots/types
Thomas Hebb dcae6f1431 Allow keyboard and pointer grabs to hook clear_focus()
This is necessary for some grabs, which currently have no way of knowing
when the pointer/keyboard focus has left a surface. For example, without
this, a drag-and-drop grab can erroneously drop into a window that the
cursor is no longer over.

This is the plumbing needed to properly fix swaywm/sway#5220. The
existing fix, swaywm/sway#5222, relies on every grab's `enter()` hook
allowing a `NULL` surface. This is not guaranteed by the API and, in
fact, is not the case for the xdg-shell popup grab and results in a
crash when the cursor leaves a surface and does not immediately enter
another one while a popup is open (#2161).

This fix also adds an assertion to wlr_seat_pointer_notify_enter() that
ensures it's never called with a `NULL` surface. This will make Sway
crash much more until it fixes its usage of the API, so we should land
this at the same time as a fix in Sway (which I haven't posted yet).
2020-06-05 17:20:26 +02:00
..
data_device Allow keyboard and pointer grabs to hook clear_focus() 2020-06-05 17:20:26 +02:00
seat Allow keyboard and pointer grabs to hook clear_focus() 2020-06-05 17:20:26 +02:00
tablet_v2 Add comments for missing tablet tool entries 2020-05-28 15:13:05 +02:00
xdg_shell Allow keyboard and pointer grabs to hook clear_focus() 2020-06-05 17:20:26 +02:00
xdg_shell_v6 Allow keyboard and pointer grabs to hook clear_focus() 2020-06-05 17:20:26 +02:00
meson.build keyboard-shortcuts-inhibit: Implement the protocol 2020-02-20 21:40:34 +01:00
wlr_box.c Fix output rotation direction 2020-02-17 21:43:05 +01:00
wlr_buffer.c buffer: add width and height 2020-04-02 15:03:43 +02:00
wlr_compositor.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_cursor.c input/tablet: fix up updated axes after rotation 2020-04-27 18:34:09 +02:00
wlr_data_control_v1.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_export_dmabuf_v1.c export-dmabuf: Keep frame->output = NULL until frame is ready 2020-06-01 12:50:26 +02:00
wlr_foreign_toplevel_management_v1.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_fullscreen_shell_v1.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_gamma_control_v1.c output: make wlr_output_set_gamma atomic 2020-05-14 20:09:28 +02:00
wlr_gtk_primary_selection.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_idle.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_idle_inhibit_v1.c idle-inhibit: Style and naming improvements 2020-02-20 21:40:34 +01:00
wlr_input_device.c Remove all wayland-server.h includes 2019-07-27 15:49:32 -04:00
wlr_input_inhibitor.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_input_method_v2.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_keyboard.c wlr_keyboard_group: introduce enter and leave 2020-05-31 17:28:18 -04:00
wlr_keyboard_group.c wlr_keyboard_group: introduce enter and leave 2020-05-31 17:28:18 -04:00
wlr_keyboard_shortcuts_inhibit_v1.c keyboard-shortcuts-inhibit: Implement the protocol 2020-02-20 21:40:34 +01:00
wlr_layer_shell_v1.c layer shell: only send unmap on close if mapped 2020-05-02 18:25:09 +02:00
wlr_linux_dmabuf_v1.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_list.c Revert "ELF Visibility" 2018-02-19 18:01:27 -05:00
wlr_matrix.c Fix output rotation direction 2020-02-17 21:43:05 +01:00
wlr_output.c output: make wlr_output_set_gamma atomic 2020-05-14 20:09:28 +02:00
wlr_output_damage.c output: replace wlr_output.damage with a damage event 2020-03-12 22:47:59 +01:00
wlr_output_layout.c Add -Wmissing-prototypes 2019-11-20 02:05:03 +00:00
wlr_output_management_v1.c output-management: add current_configuration_dirty 2020-02-19 11:40:23 +01:00
wlr_output_power_management_v1.c wlr_output_power_management_v1: Init output_power->link 2020-02-27 14:05:01 +01:00
wlr_pointer.c Remove all wayland-server.h includes 2019-07-27 15:49:32 -04:00
wlr_pointer_constraints_v1.c input/pointer: notify compositor when constraint region changes 2020-05-13 20:38:12 +02:00
wlr_pointer_gestures_v1.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_presentation_time.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_primary_selection.c wlr_seat: Fix edge cases with serial validation 2019-06-30 15:01:05 -04:00
wlr_primary_selection_v1.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_region.c Remove all wayland-server.h includes 2019-07-27 15:49:32 -04:00
wlr_relative_pointer_v1.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_screencopy_v1.c Gracefully handle inert wl_output resources 2020-03-29 20:57:28 +02:00
wlr_server_decoration.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_surface.c buffer: add a release event 2020-04-02 15:03:43 +02:00
wlr_switch.c Remove all wayland-server.h includes 2019-07-27 15:49:32 -04:00
wlr_tablet_pad.c Move initialization of wlr_tablet_pad into types/wlr_tablet_pad 2019-09-26 19:41:19 +03:00
wlr_tablet_tool.c Remove all wayland-server.h includes 2019-07-27 15:49:32 -04:00
wlr_text_input_v3.c text_input_v3: Note features supported by the text field 2020-02-20 16:21:44 +01:00
wlr_touch.c Remove all wayland-server.h includes 2019-07-27 15:49:32 -04:00
wlr_virtual_keyboard_v1.c virtual_keyboard: Accept keycode 0 2019-11-27 16:49:12 +01:00
wlr_virtual_pointer_v1.c virtual-pointer: Add request for mapping to specific output 2020-02-10 21:01:38 +01:00
wlr_xcursor_manager.c Make wlr_xcursor_manager_load() return a bool 2020-05-18 16:48:44 +02:00
wlr_xdg_decoration_v1.c Simplify globals implementation by removing destructors 2019-11-25 09:01:46 -05:00
wlr_xdg_output_v1.c Gracefully handle inert wl_output resources 2020-03-29 20:57:28 +02:00