tablet: expose wlr_tablet_tool_v2_has_implicit_grab function

This is necessary so that sway can determine when to start emulating
pointer events -- it shouldn't start doing so during an implicit grab,
even if the pen is over a surface that doesn't bind tablet input.

Refs swaywm/sway#5302.
This commit is contained in:
Tudor Brindus 2020-05-04 17:45:01 -04:00 committed by Simon Ser
parent 74c0d03f00
commit 7693fdb8a7
2 changed files with 5 additions and 2 deletions

View file

@ -253,6 +253,8 @@ void wlr_tablet_tool_v2_end_grab(struct wlr_tablet_v2_tablet_tool *tool);
void wlr_tablet_tool_v2_start_implicit_grab(struct wlr_tablet_v2_tablet_tool *tool); void wlr_tablet_tool_v2_start_implicit_grab(struct wlr_tablet_v2_tablet_tool *tool);
bool wlr_tablet_tool_v2_has_implicit_grab(
struct wlr_tablet_v2_tablet_tool *tool);
uint32_t wlr_send_tablet_v2_tablet_pad_enter( uint32_t wlr_send_tablet_v2_tablet_pad_enter(
struct wlr_tablet_v2_tablet_pad *pad, struct wlr_tablet_v2_tablet_pad *pad,

View file

@ -822,13 +822,14 @@ static const struct wlr_tablet_tool_v2_grab_interface
.cancel = implicit_tool_cancel, .cancel = implicit_tool_cancel,
}; };
static bool tool_has_implicit_grab(struct wlr_tablet_v2_tablet_tool *tool) { bool wlr_tablet_tool_v2_has_implicit_grab(
struct wlr_tablet_v2_tablet_tool *tool) {
return tool->grab->interface == &implicit_tool_grab_interface; return tool->grab->interface == &implicit_tool_grab_interface;
} }
void wlr_tablet_tool_v2_start_implicit_grab( void wlr_tablet_tool_v2_start_implicit_grab(
struct wlr_tablet_v2_tablet_tool *tool) { struct wlr_tablet_v2_tablet_tool *tool) {
if (tool_has_implicit_grab(tool) || !tool->focused_surface) { if (wlr_tablet_tool_v2_has_implicit_grab(tool) || !tool->focused_surface) {
return; return;
} }