[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