[Scummvm-git-logs] scummvm master -> c3ebc873908a1fb7cd452d29e6e2b040d146c8f6

npjg nathanael.gentrydb8 at gmail.com
Thu Jun 11 14:23:06 UTC 2020


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

Summary:
3131f2b532 DIRECTOR: Overload editableText and puppetSprite
83418686ee GRAPHICS: MACGUI: Implement basic priority handling
c3ebc87390 DIRECTOR: Set basic widget priority


Commit: 3131f2b5325945db9f2c9a550aa3f17936da0398
    https://github.com/scummvm/scummvm/commit/3131f2b5325945db9f2c9a550aa3f17936da0398
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-11T10:20:17-04:00

Commit Message:
DIRECTOR: Overload editableText and puppetSprite

Changed paths:
    engines/director/lingo/lingo-builtins.cpp


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 22fdf77c83..13dba12c0e 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1453,13 +1453,33 @@ void LB::b_duplicate(int nargs) {
 }
 
 void LB::b_editableText(int nargs) {
-	Frame *frame = g_director->getCurrentScore()->_frames[g_director->getCurrentScore()->getCurrentFrame()];
-
-	if (g_lingo->_currentChannelId == -1) {
-		warning("b_editableText: channel Id is missing");
+	Score *sc = g_director->getCurrentScore();
+	if (!sc) {
+		warning("b_editableText: no score");
+		g_lingo->dropStack(nargs);
 		return;
 	}
-	frame->_sprites[g_lingo->_currentChannelId]->_editable = true;
+
+	if (nargs == 2) {
+		Datum state = g_lingo->pop();
+		Datum sprite = g_lingo->pop();
+		if ((uint)sprite.asInt() < sc->_sprites.size()) {
+			sc->_sprites[sprite.asInt()]->_editable = state.asInt();
+		} else {
+			warning("b_editableText: sprite index out of bounds");
+		}
+	} else if (nargs == 0 && g_director->getVersion() < 4) {
+		g_lingo->dropStack(nargs);
+
+		if (g_lingo->_currentChannelId == -1) {
+			warning("b_editableText: channel Id is missing");
+			return;
+		}
+		sc->_sprites[g_lingo->_currentChannelId]->_editable = true;
+	} else {
+		warning("b_editableText: unexpectedly received %d arguments", nargs);
+		g_lingo->dropStack(nargs);
+	}
 }
 
 void LB::b_erase(int nargs) {
@@ -1683,7 +1703,7 @@ void LB::b_puppetSprite(int nargs) {
 		return;
 	}
 
-	if (nargs == 2 && g_director->getVersion() >= 4) {
+	if (nargs == 2) {
 		Datum state = g_lingo->pop();
 		Datum sprite = g_lingo->pop();
 		if ((uint)sprite.asInt() < sc->_sprites.size()) {


Commit: 83418686ee0aab985e1e421af3ce61dbff70941b
    https://github.com/scummvm/scummvm/commit/83418686ee0aab985e1e421af3ce61dbff70941b
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-11T10:20:17-04:00

Commit Message:
GRAPHICS: MACGUI: Implement basic priority handling

Changed paths:
    graphics/macgui/macwidget.cpp
    graphics/macgui/macwidget.h


diff --git a/graphics/macgui/macwidget.cpp b/graphics/macgui/macwidget.cpp
index 400ffd8e0d..09085bbf45 100644
--- a/graphics/macgui/macwidget.cpp
+++ b/graphics/macgui/macwidget.cpp
@@ -30,6 +30,7 @@ namespace Graphics {
 	MacWidget::MacWidget(MacWidget *parent, int x, int y, int w, int h, bool focusable, uint16 border, uint16 gutter, uint16 shadow) :
 	_focusable(focusable), _parent(parent), _border(border), _gutter(gutter), _shadow(shadow) {
 	_contentIsDirty = true;
+	_priority = 0;
 
 	_dims.left = x;
 	_dims.right = x + w + 2 * border + 2 * gutter + shadow + 1;
@@ -110,12 +111,15 @@ MacWidget *MacWidget::findEventHandler(Common::Event &event, int dx, int dy) {
 			pos = g_system->getEventManager()->getMousePos();
 
 			if (_dims.contains(pos.x - dx, pos.y - dy)) {
+				uint priority = 0;
+				MacWidget *widget = nullptr;
+
 				for (uint i = 0; i < _children.size(); i++) {
 					MacWidget *res = _children[i]->findEventHandler(event, dx + _dims.left, dy + _dims.top);
-					if (res)
-						return res;
+					if (res && res->_priority > priority)
+						widget = res;
 				}
-				return this;
+				return widget ? widget : this;
 			}
 			break;
 		}
diff --git a/graphics/macgui/macwidget.h b/graphics/macgui/macwidget.h
index 8fbada8977..f41c18a193 100644
--- a/graphics/macgui/macwidget.h
+++ b/graphics/macgui/macwidget.h
@@ -95,6 +95,7 @@ public:
 	bool _contentIsDirty;
 	bool _active;
 	bool _editable;
+	uint _priority;
 
 	Common::Rect _dims;
 


Commit: c3ebc873908a1fb7cd452d29e6e2b040d146c8f6
    https://github.com/scummvm/scummvm/commit/c3ebc873908a1fb7cd452d29e6e2b040d146c8f6
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-11T10:21:28-04:00

Commit Message:
DIRECTOR: Set basic widget priority

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 38c5b5e0aa..cc8a734a6b 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -554,6 +554,7 @@ void Score::renderSprite(uint16 id) {
 	} else {
 		Cast *cast = _sprites[id]->_cast;
 		if (cast && cast->_widget) {
+			cast->_widget->_priority = id;
 			cast->_widget->draw();
 			inkBasedBlit(cast->_widget->getMask(), cast->_widget->getSurface()->rawSurface(), _sprites[id]->_ink, _sprites[id]->_currentBbox, id);
 		} else {




More information about the Scummvm-git-logs mailing list