Problem
Confirmed via a full source grep (Requester/IDCMP_REQ/AutoRequest/
EasyRequest/SysReq — zero matches anywhere in server/,
intuition-model/, amiinspect/, host/, manifest/, docs/,
userdocs/): AmiPilot has no support at all for Intuition's
Requester mechanism (struct Requester, intuition/intuition.h) —
the modal boxes behind Request()/AutoRequest()/EasyRequest(),
covering both an application's own "Are you sure?" dialogs and
system-wide ones (disk-swap "Please insert volume X", DOS error
requesters, Software Failure/Guru).
This is architecturally distinct from every locator this project
already supports: a Requester's content (its OK/Cancel-style buttons,
its body text) lives in its own ReqGadget list, reached via
window->FirstRequest (window-attached form) — not
window->FirstGadget, which is the only chain
intuition-model/src/walk.c's WalkGadgetList() ever iterates. So
even a window that TREE already finds successfully will show nothing
useful once a Requester opens over it, and CLICK/GETTEXT have no
locator that can reach a Requester's gadgets by any means (GA_ID,
ROLE=, or otherwise) since the walker never sees them.
AutoRequest()'s own autodoc (BuildSysRequest(), which it's built
on) confirms a system-wide requester (no owning window — the
common case for disk-swap/DOS-error/Guru requesters) can come back as
a genuine struct Window of its own, separate from any application
window. That window would currently be findable by AmipFindWindow()
(it walks every screen's window list) — but its actual box/text/gadgets
are still only reachable through that window's FirstRequest chain,
same gap.
Practical impact
- A test driving real, unmodified software (the stock-app-conformance
goal this project already holds itself to) has no way to detect or
dismiss an unexpected requester — a disk-swap prompt, a "file
already exists, overwrite?" dialog, a crash/Guru — via CLICK. The
automation session likely just stalls waiting on a WAITFOR/TREE
that never sees what's actually blocking the target window.
- Reported by @sidick during hardware-adjacent testing setup (a real
Picasso96 3.6 install on the amipilot hard drive, uaegfx enabled)
as a real gap worth tracking, with manual click-through as the
interim workaround.
Proposed design (sketch, not yet scoped in detail)
- Discovery: extend
intuition-model's walk to also report a
window's FirstRequest chain (or the presence of one) — a
Requester's own LeftEdge/TopEdge/Width/Height/ReqGadget
list is real, walkable structure, the same shape as a window's own
gadget list, just reached differently. TREE's output would need a
way to represent "this window currently has an active requester"
distinctly from its normal gadget tree.
- System-wide requesters: since
BuildSysRequest() can produce a
standalone window with no application owner, AmipFindWindow()
already reaching it is necessary but not sufficient — its content
still needs the same FirstRequest walk as the window-attached
case.
- Action:
CLICK's existing ROLE=/INDEX=/GA_ID locators
would need a way to target a Requester gadget specifically (a new
locator prefix, e.g. REQ=?), since GA_ID on a Requester's
ReqGadget list could collide with the owning window's own
FirstGadget IDs.
- Detection without acting: a
WAITFOR-style condition
("a requester appeared on window X") would let a test at least
assert on / react to an unexpected requester rather than only
silently timing out, even before full requester-gadget targeting
lands.
Why now
Filed per @sidick's request while setting up real hardware-adjacent
testing (Picasso96 3.6 + uaegfx installed on the amipilot test hard
drive) — noted as a real, currently-unaddressed gap to track rather
than something to silently work around; manual click-through remains
the interim path until this is designed and scoped properly.
Problem
Confirmed via a full source grep (
Requester/IDCMP_REQ/AutoRequest/EasyRequest/SysReq— zero matches anywhere inserver/,intuition-model/,amiinspect/,host/,manifest/,docs/,userdocs/): AmiPilot has no support at all for Intuition'sRequester mechanism (
struct Requester,intuition/intuition.h) —the modal boxes behind
Request()/AutoRequest()/EasyRequest(),covering both an application's own "Are you sure?" dialogs and
system-wide ones (disk-swap "Please insert volume X", DOS error
requesters, Software Failure/Guru).
This is architecturally distinct from every locator this project
already supports: a Requester's content (its OK/Cancel-style buttons,
its body text) lives in its own
ReqGadgetlist, reached viawindow->FirstRequest(window-attached form) — notwindow->FirstGadget, which is the only chainintuition-model/src/walk.c'sWalkGadgetList()ever iterates. Soeven a window that TREE already finds successfully will show nothing
useful once a Requester opens over it, and
CLICK/GETTEXThave nolocator that can reach a Requester's gadgets by any means (
GA_ID,ROLE=, or otherwise) since the walker never sees them.AutoRequest()'s own autodoc (BuildSysRequest(), which it's builton) confirms a system-wide requester (no owning window — the
common case for disk-swap/DOS-error/Guru requesters) can come back as
a genuine
struct Windowof its own, separate from any applicationwindow. That window would currently be findable by
AmipFindWindow()(it walks every screen's window list) — but its actual box/text/gadgets
are still only reachable through that window's
FirstRequestchain,same gap.
Practical impact
goal this project already holds itself to) has no way to detect or
dismiss an unexpected requester — a disk-swap prompt, a "file
already exists, overwrite?" dialog, a crash/Guru — via
CLICK. Theautomation session likely just stalls waiting on a
WAITFOR/TREEthat never sees what's actually blocking the target window.
Picasso96 3.6 install on the
amipilothard drive, uaegfx enabled)as a real gap worth tracking, with manual click-through as the
interim workaround.
Proposed design (sketch, not yet scoped in detail)
intuition-model's walk to also report awindow's
FirstRequestchain (or the presence of one) — aRequester's own
LeftEdge/TopEdge/Width/Height/ReqGadgetlist is real, walkable structure, the same shape as a window's own
gadget list, just reached differently.
TREE's output would need away to represent "this window currently has an active requester"
distinctly from its normal gadget tree.
BuildSysRequest()can produce astandalone window with no application owner,
AmipFindWindow()already reaching it is necessary but not sufficient — its content
still needs the same
FirstRequestwalk as the window-attachedcase.
CLICK's existingROLE=/INDEX=/GA_IDlocatorswould need a way to target a Requester gadget specifically (a new
locator prefix, e.g.
REQ=?), sinceGA_IDon a Requester'sReqGadgetlist could collide with the owning window's ownFirstGadgetIDs.WAITFOR-style condition("a requester appeared on window X") would let a test at least
assert on / react to an unexpected requester rather than only
silently timing out, even before full requester-gadget targeting
lands.
Why now
Filed per @sidick's request while setting up real hardware-adjacent
testing (Picasso96 3.6 + uaegfx installed on the
amipilottest harddrive) — noted as a real, currently-unaddressed gap to track rather
than something to silently work around; manual click-through remains
the interim path until this is designed and scoped properly.