// returns true iff clicked sbool dm_moveMouseAndClick(Rect r, S targetName, O... _) { if (r == null) false; optPar O enabled; // func -> bool double waitBeforeClick = doublePar waitBeforeClick(_, 1.0); print("Moving mouse to " + targetName + "!!!!"); O mover = vmBus_query mouseMover(); if (mover == null) ret false with print("No mover"); callWithImportExport(mover, 'moveMouse, centerOfRect(r)); print("MOVED"); long startTime = sysNow(); while (licensed() && sysNow() < startTime+toMS(waitBeforeClick)) { if (isFalse_callF(enabled)) false; if (isTrue_rcall blocked(mover)) ret false with print("INTERFERENCE, EXITING"); sleepSeconds(0.05); } if (!r.contains(mouseLocationPt())) ret false with print("Mouse outside of target area, exiting"); print("CLICKING!"); rcall click(mover); print("CLICKED!"); true; } sbool dm_moveMouseAndClick(S targetName, Rect r, O... _) { ret dm_moveMouseAndClick(r, targetName, _); }