[Scummvm-git-logs] scummvm master -> 6f71dfcb6c0c4a8986814f5c0c292aaa8f4905ed
sev-
noreply at scummvm.org
Tue Jul 7 08:46:46 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
6f71dfcb6c DIRECTOR: LINGO: Proper place for `the clickOn` assignment
Commit: 6f71dfcb6c0c4a8986814f5c0c292aaa8f4905ed
https://github.com/scummvm/scummvm/commit/6f71dfcb6c0c4a8986814f5c0c292aaa8f4905ed
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-07-07T10:46:39+02:00
Commit Message:
DIRECTOR: LINGO: Proper place for `the clickOn` assignment
We were determining the clicked sprite on every handler. However,
it might happen, that first handler in the chain moves the sprite
or hides it, making subsequent calls overriding the correct sprite.
Fixes Horse of Asvah puzzle in jewels1 (CIPHER/STONE_19.DXR)
Changed paths:
engines/director/lingo/lingo-events.cpp
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index 257b390c3ed..2f2fef8560c 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -137,15 +137,6 @@ void Movie::resolveScriptEvent(LingoEvent &event) {
debugC(3, kDebugEvents, "Movie::resolveScriptEvent(%s): id: %d sourceType: %s, handlerType: %s, pos: [%d, %d], spriteId: %d",
leventType2str(event.event), event.eventId, scriptType2str(event.scriptType),
eventHandlerSourceType2str(event.eventHandlerSourceType), event.mousePos.x, event.mousePos.y, spriteId);
-
- if (event.event == kEventMouseDown || event.event == kEventRightMouseDown) {
- _lastClickedSpriteId = spriteId; // the clickOn
- } else if (event.event == kEventMouseUp || event.event == kEventRightMouseUp) {
- // Do not override when clicked on Score
- if (spriteId)
- _lastClickedSpriteId = spriteId;
- }
-
}
// Very occasionally, we want to specify an event with a channel ID
// rather than infer it from the position. Allow it to override.
@@ -569,6 +560,14 @@ void Movie::queueEvent(Common::Queue<LingoEvent> &queue, LEvent event, int targe
uint16 spriteId = _score->getMouseSpriteIDFromPos(pos);
Sprite *sprite = _score->getSpriteById(spriteId);
+ if (event == kEventMouseDown || event == kEventRightMouseDown) {
+ _lastClickedSpriteId = spriteId; // the clickOn
+ } else if (event == kEventMouseUp || event == kEventRightMouseUp) {
+ // Do not override when clicked on Score
+ if (spriteId)
+ _lastClickedSpriteId = spriteId;
+ }
+
switch (event) {
case kEventKeyUp:
case kEventKeyDown:
More information about the Scummvm-git-logs
mailing list