Ariver
2026-07-02 b2a06ec5ebc86c0241e635782ae5a032ab5aad0a
src/Scripts/usage_tips_qa.sh
@@ -316,6 +316,11 @@
    "AppGrid host must intercept usage tips mouseDown/mouseUp events before NSCollectionView app items receive them",
)
require(
    r"guard\s+let\s+self\s*,\s*event\.window\s*===\s*self\.window\s*,\s*self\.handleUsageTipsMouseEvent",
    app_grid,
    "usage tips local mouse monitor must only consume events from its own AppGrid window",
)
require(
    r"triggerButtons\s*:\s*event\.type\s*==\s*\.leftMouseDown",
    app_grid,
    "usage tips monitor must only trigger page changes on left mouseDown",
@@ -328,6 +333,13 @@
if re.search(r"handleMouseEventFromHost\s*\(\s*_\s+event\s*:\s*NSEvent,\s*triggerButtons\s*:\s*Bool\s*\).*?target\.mouseDown", app_grid, re.S):
    fail("usage tips host-routed clicks must not redispatch arbitrary mouseDown events")
for function_name in ["usageTipsHostPoint", "usageTipsPoint"]:
    require(
        rf"private\s+func\s+{function_name}\s*\(\s*for\s+event\s*:\s*NSEvent\s*\)\s*->\s*NSPoint\s*\{{\s*if\s+event\.window\s*===\s*window\s*\{{(?P<body>.*?)return\s+convert\s*\(\s*event\.locationInWindow\s*,\s*from\s*:\s*nil\s*\)(?P<body2>.*?)\}}\s*return\s+\.zero\s*\}}",
        app_grid,
        f"{function_name} must return zero for events outside its own window",
    )
for token in [
    r"private\s+final\s+class\s+AppGridUsageTipIconButton\s*:\s*NSView\b",
    r"override\s+func\s+acceptsFirstMouse\s*\(\s*for\s+event\s*:\s*NSEvent\?\s*\)\s*->\s*Bool\s*\{\s*true\s*\}",