[Scummvm-git-logs] scummvm master -> 3cb709f135b948cc66138d3fc3919f8ac511cb8f

npjg nathanael.gentrydb8 at gmail.com
Thu Jul 16 13:59:45 UTC 2020


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
e23c264873 GRAPHICS: MACGUI: Remove mouseDownWidget
3cb709f135 DIRECTOR: Track dragged sprite by channel


Commit: e23c2648734cbda1152536909e54bbdd7cd2022c
    https://github.com/scummvm/scummvm/commit/e23c2648734cbda1152536909e54bbdd7cd2022c
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-07-16T09:59:05-04:00

Commit Message:
GRAPHICS: MACGUI: Remove mouseDownWidget

The functionality I needed here can be implemented in the Director engine instead.

Changed paths:
    graphics/macgui/macwindow.cpp
    graphics/macgui/macwindowmanager.cpp
    graphics/macgui/macwindowmanager.h


diff --git a/graphics/macgui/macwindow.cpp b/graphics/macgui/macwindow.cpp
index 4fb6148944..5cc3587eff 100644
--- a/graphics/macgui/macwindow.cpp
+++ b/graphics/macgui/macwindow.cpp
@@ -551,7 +551,6 @@ bool MacWindow::processEvent(Common::Event &event) {
 	case Common::EVENT_LBUTTONUP:
 		_beingDragged = false;
 		_beingResized = false;
-		_wm->_mouseDownWidget = nullptr;
 
 		setHighlight(kBorderNone);
 		break;
@@ -569,13 +568,10 @@ bool MacWindow::processEvent(Common::Event &event) {
 		return false;
 	}
 
-	MacWidget *w = _wm->_mouseDownWidget ? _wm->_mouseDownWidget : findEventHandler(event, _dims.left, _dims.top);
+	MacWidget *w = findEventHandler(event, _dims.left, _dims.top);
 	if (w && w != this) {
 		_wm->_hoveredWidget = w;
 
-		if (event.type == Common::EVENT_LBUTTONDOWN)
-			_wm->_mouseDownWidget = w;
-
 		if (w->processEvent(event))
 			return true;
 	}
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 2bb51239c0..60d04a33bf 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -161,7 +161,6 @@ MacWindowManager::MacWindowManager(uint32 mode, MacPatterns *patterns) {
 	_activeWidget = nullptr;
 	_mouseDown = false;
 	_hoveredWidget = nullptr;
-	_mouseDownWidget = nullptr;
 
 	_mode = mode;
 
@@ -329,7 +328,6 @@ void MacWindowManager::removeWindow(MacWindow *target) {
 	_windowsToRemove.push_back(target);
 	_needsRemoval = true;
 	_hoveredWidget = nullptr;
-	_mouseDownWidget = nullptr;
 
 	if (target->getId() == _activeWindow)
 		_activeWindow = -1;
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index 2c6b826aa2..d291cc78c9 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -279,7 +279,6 @@ public:
 	int _colorBlack, _colorWhite;
 
 	MacWidget *_hoveredWidget;
-	MacWidget *_mouseDownWidget;
 
 private:
 	void drawDesktop();


Commit: 3cb709f135b948cc66138d3fc3919f8ac511cb8f
    https://github.com/scummvm/scummvm/commit/3cb709f135b948cc66138d3fc3919f8ac511cb8f
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-07-16T09:59:05-04:00

Commit Message:
DIRECTOR: Track dragged sprite by channel

Changed paths:
    engines/director/director.cpp
    engines/director/director.h
    engines/director/events.cpp


diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 21e82726d9..10bf010a2e 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -109,8 +109,7 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
 	_playbackPaused = false;
 	_skipFrameAdvance = false;
 
-	_draggingSprite = false;
-	_draggingSpriteId = 0;
+	_currentDraggedChannel = nullptr;
 }
 
 DirectorEngine::~DirectorEngine() {
diff --git a/engines/director/director.h b/engines/director/director.h
index e72d5dcc29..768019ba94 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -62,6 +62,7 @@ class Lingo;
 class Movie;
 class Stage;
 class Score;
+class Channel;
 class CastMember;
 class Stxt;
 
@@ -189,8 +190,6 @@ public:
 
 	// events.cpp
 	void processEvents(bool bufferLingoEvents = false);
-	void setDraggedSprite(uint16 id);
-	void releaseDraggedSprite();
 	uint32 getMacTicks();
 	void waitForClick();
 
@@ -231,8 +230,7 @@ private:
 
 	Common::HashMap<int, PaletteV4 *> _director4Palettes;
 
-	bool _draggingSprite;
-	uint16 _draggingSpriteId;
+	Channel *_currentDraggedChannel;
 	Common::Point _draggingSpritePos;
 };
 
diff --git a/engines/director/events.cpp b/engines/director/events.cpp
index 716996be06..7eebd66ae8 100644
--- a/engines/director/events.cpp
+++ b/engines/director/events.cpp
@@ -84,15 +84,14 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
 				m->_lastEventTime = g_director->getMacTicks();
 				m->_lastRollTime =	 m->_lastEventTime;
 
-				if (_draggingSprite) {
-					Sprite *draggedSprite = sc->getSpriteById(_draggingSpriteId);
-					if (draggedSprite->_moveable) {
+				if (_currentDraggedChannel) {
+					if (_currentDraggedChannel->_sprite->_moveable) {
 						pos = getCurrentStage()->getMousePos();
 
-						sc->_channels[_draggingSpriteId]->addDelta(pos - _draggingSpritePos);
+						_currentDraggedChannel->addDelta(pos - _draggingSpritePos);
 						_draggingSpritePos = pos;
 					} else {
-						releaseDraggedSprite();
+						_currentDraggedChannel = nullptr;
 					}
 				}
 				break;
@@ -116,8 +115,10 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
 				debugC(3, kDebugEvents, "event: Button Down @(%d, %d), sprite id: %d", pos.x, pos.y, spriteId);
 				_lingo->registerEvent(kEventMouseDown, spriteId);
 
-				if (sc->getSpriteById(spriteId)->_moveable)
-					g_director->setDraggedSprite(spriteId);
+				if (sc->_channels[spriteId]->_sprite->_moveable) {
+					_draggingSpritePos = _currentStage->getMousePos();
+					_currentDraggedChannel = sc->_channels[spriteId];
+				}
 
 				break;
 
@@ -137,7 +138,7 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
 
 				debugC(3, kDebugEvents, "event: Button Up @(%d, %d), sprite id: %d", pos.x, pos.y, spriteId);
 
-				releaseDraggedSprite();
+				_currentDraggedChannel = nullptr;
 
 				{
 					CastMember *cast = g_director->getCurrentMovie()->getCastMember(sc->getSpriteById(spriteId)->_castId);
@@ -184,17 +185,6 @@ void DirectorEngine::processEvents(bool bufferLingoEvents) {
 	}
 }
 
-void DirectorEngine::setDraggedSprite(uint16 id) {
-	_draggingSprite = true;
-	_draggingSpriteId = id;
-	_draggingSpritePos = _currentStage->getMousePos();
-}
-
-void DirectorEngine::releaseDraggedSprite() {
-	_draggingSprite = false;
-	_draggingSpriteId = 0;
-}
-
 void DirectorEngine::waitForClick() {
 	setCursor(kCursorMouseUp);
 




More information about the Scummvm-git-logs mailing list