[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