[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