wayland: Refactor tablet tool grab checks

Move the bulk of the implementation inside MetaWaylandTabletTool
files, so MetaWaylandTablet does not need to access at tool struct
fields.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3627>
This commit is contained in:
Carlos Garnacho 2024-02-27 23:08:28 +01:00 committed by Marge Bot
parent 314ab7c3cb
commit f17300a22e
3 changed files with 42 additions and 17 deletions

View File

@ -587,20 +587,14 @@ meta_wayland_tablet_seat_get_grab_info (MetaWaylandTabletSeat *tablet_seat,
{ {
MetaWaylandTabletTool *tool = l->data; MetaWaylandTabletTool *tool = l->data;
if ((!require_pressed || tool->button_count > 0) && if (meta_wayland_tablet_tool_get_grab_info (tool,
meta_wayland_tablet_tool_can_grab_surface (tool, surface, serial)) surface,
{ serial,
if (device_out) require_pressed,
*device_out = tool->device; device_out,
x, y))
if (x)
*x = tool->grab_x;
if (y)
*y = tool->grab_y;
return TRUE; return TRUE;
} }
}
return FALSE; return FALSE;
} }

View File

@ -913,7 +913,7 @@ tablet_tool_can_grab_surface (MetaWaylandTabletTool *tool,
return FALSE; return FALSE;
} }
gboolean static gboolean
meta_wayland_tablet_tool_can_grab_surface (MetaWaylandTabletTool *tool, meta_wayland_tablet_tool_can_grab_surface (MetaWaylandTabletTool *tool,
MetaWaylandSurface *surface, MetaWaylandSurface *surface,
uint32_t serial) uint32_t serial)
@ -922,6 +922,32 @@ meta_wayland_tablet_tool_can_grab_surface (MetaWaylandTabletTool *tool,
tablet_tool_can_grab_surface (tool, surface)); tablet_tool_can_grab_surface (tool, surface));
} }
gboolean
meta_wayland_tablet_tool_get_grab_info (MetaWaylandTabletTool *tool,
MetaWaylandSurface *surface,
uint32_t serial,
gboolean require_pressed,
ClutterInputDevice **device_out,
float *x,
float *y)
{
if ((!require_pressed || tool->button_count > 0) &&
meta_wayland_tablet_tool_can_grab_surface (tool, surface, serial))
{
if (device_out)
*device_out = tool->device;
if (x)
*x = tool->grab_x;
if (y)
*y = tool->grab_y;
return TRUE;
}
return FALSE;
}
gboolean gboolean
meta_wayland_tablet_tool_can_popup (MetaWaylandTabletTool *tool, meta_wayland_tablet_tool_can_popup (MetaWaylandTabletTool *tool,
uint32_t serial) uint32_t serial)

View File

@ -76,9 +76,14 @@ void meta_wayland_tablet_tool_update (MetaWaylandTabletTool *t
gboolean meta_wayland_tablet_tool_handle_event (MetaWaylandTabletTool *tool, gboolean meta_wayland_tablet_tool_handle_event (MetaWaylandTabletTool *tool,
const ClutterEvent *event); const ClutterEvent *event);
gboolean meta_wayland_tablet_tool_can_grab_surface (MetaWaylandTabletTool *tool, gboolean meta_wayland_tablet_tool_get_grab_info (MetaWaylandTabletTool *tool,
MetaWaylandSurface *surface, MetaWaylandSurface *surface,
uint32_t serial); uint32_t serial,
gboolean require_pressed,
ClutterInputDevice **device_out,
float *x,
float *y);
gboolean meta_wayland_tablet_tool_can_popup (MetaWaylandTabletTool *tool, gboolean meta_wayland_tablet_tool_can_popup (MetaWaylandTabletTool *tool,
uint32_t serial); uint32_t serial);