[Scummvm-git-logs] scummvm master -> ee39a12165421abd4599b699161852e4a0d64bb0
sev-
sev at scummvm.org
Sun Jul 19 15:18:30 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:
7e09789d10 DIRECTOR: Set the current editable text channel
ee39a12165 DIRECTOR: LINGO: Implement 'the selEnd' and 'the selStart'
Commit: 7e09789d10a9d6391fd6ea6c9645f999e6ed4672
https://github.com/scummvm/scummvm/commit/7e09789d10a9d6391fd6ea6c9645f999e6ed4672
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-19T17:17:45+02:00
Commit Message:
DIRECTOR: Set the current editable text channel
Changed paths:
engines/director/channel.cpp
engines/director/channel.h
engines/director/movie.cpp
engines/director/movie.h
engines/director/score.cpp
diff --git a/engines/director/channel.cpp b/engines/director/channel.cpp
index bd91dd9329..ff58d535df 100644
--- a/engines/director/channel.cpp
+++ b/engines/director/channel.cpp
@@ -138,6 +138,16 @@ bool Channel::isEmpty() {
return (_sprite->_spriteType == kInactiveSprite);
}
+bool Channel::isActiveText() {
+ if (_sprite->_spriteType != kTextSprite)
+ return false;
+
+ if (_sprite->_cast->_widget && _sprite->_cast->_widget->hasAllFocus())
+ return true;
+
+ return false;
+}
+
Common::Rect Channel::getBbox(bool unstretched) {
Common::Rect result(unstretched ? _sprite->_width : _width,
diff --git a/engines/director/channel.h b/engines/director/channel.h
index 5e6bfa8de7..3bcd872c7a 100644
--- a/engines/director/channel.h
+++ b/engines/director/channel.h
@@ -44,6 +44,7 @@ public:
bool isStretched();
bool isDirty(Sprite *nextSprite = nullptr);
bool isEmpty();
+ bool isActiveText();
void setWidth(int w);
void setHeight(int h);
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index a65e0ac1c6..1715d6acb2 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -46,6 +46,7 @@ Movie::Movie(Stage *stage) {
_currentMouseDownSpriteId = 0;
_currentClickOnSpriteId = 0;
+ _currentEditableTextChannel = 0;
_lastEventTime = _vm->getMacTicks();
_lastKeyTime = _lastEventTime;
_lastClickTime = _lastEventTime;
diff --git a/engines/director/movie.h b/engines/director/movie.h
index c0c1e36584..561d10815f 100644
--- a/engines/director/movie.h
+++ b/engines/director/movie.h
@@ -118,6 +118,7 @@ public:
Common::Rect _movieRect;
uint16 _currentMouseDownSpriteId;
uint16 _currentClickOnSpriteId;
+ uint16 _currentEditableTextChannel;
uint32 _lastEventTime;
uint32 _lastRollTime;
uint32 _lastClickTime;
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index e9f5c82837..d7433bdbb0 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -411,6 +411,9 @@ void Score::renderSprites(uint16 frameId, RenderMode mode) {
Sprite *currentSprite = channel->_sprite;
Sprite *nextSprite = _frames[frameId]->_sprites[i];
+ if (channel->isActiveText())
+ _movie->_currentEditableTextChannel = i;
+
if (channel->isDirty(nextSprite) || mode == kRenderForceUpdate) {
if (!currentSprite->_trails)
_stage->addDirtyRect(channel->getBbox());
Commit: ee39a12165421abd4599b699161852e4a0d64bb0
https://github.com/scummvm/scummvm/commit/ee39a12165421abd4599b699161852e4a0d64bb0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-19T17:17:57+02:00
Commit Message:
DIRECTOR: LINGO: Implement 'the selEnd' and 'the selStart'
Changed paths:
engines/director/lingo/lingo-the.cpp
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 40f6e551ee..dea355da6b 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -915,10 +915,21 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
setTheEntitySTUB(kTheRomanLingo);
break;
case kTheSelEnd:
- setTheEntitySTUB(kTheSelEnd);
+ if (_vm->getCurrentMovie()->_currentEditableTextChannel != 0) {
+ Channel *channel = _vm->getCurrentMovie()->getScore()->getChannelById(_vm->getCurrentMovie()->_currentEditableTextChannel);
+
+ if (channel->_sprite->_cast->_widget)
+ (((Graphics::MacText *)channel->_sprite->_cast->_widget)->setSelection(d.asInt(), false));
+ }
+ break;
break;
case kTheSelStart:
- setTheEntitySTUB(kTheSelStart);
+ if (_vm->getCurrentMovie()->_currentEditableTextChannel != 0) {
+ Channel *channel = _vm->getCurrentMovie()->getScore()->getChannelById(_vm->getCurrentMovie()->_currentEditableTextChannel);
+
+ if (channel->_sprite->_cast->_widget)
+ (((Graphics::MacText *)channel->_sprite->_cast->_widget)->setSelection(d.asInt(), true));
+ }
break;
case kTheSoundEnabled:
setTheEntitySTUB(kTheSoundEnabled);
More information about the Scummvm-git-logs
mailing list