[Scummvm-git-logs] scummvm master -> 828595c9fc935854efc38988f69b5f10bdf21106

npjg nathanael.gentrydb8 at gmail.com
Fri Aug 21 20:53:07 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:
0bab9810c0 DIRECTOR: Fix getWidgetRect code path
828595c9fc DIRECTOR: Don't override shape dimensions


Commit: 0bab9810c0fa44398fa5fa92fde35e4e35ef769a
    https://github.com/scummvm/scummvm/commit/0bab9810c0fa44398fa5fa92fde35e4e35ef769a
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-08-21T16:34:06-04:00

Commit Message:
DIRECTOR: Fix getWidgetRect code path

This is morally equivalent to getWidgetRect, but takes into account the changes
to dimensions that MacText makes for borders and gutters and a text shadow.
Thus, these features are working again.

Changed paths:
    engines/director/castmember.cpp
    engines/director/castmember.h
    engines/director/channel.cpp
    engines/director/sprite.cpp


diff --git a/engines/director/castmember.cpp b/engines/director/castmember.cpp
index 53ae66d388..c6915cbfac 100644
--- a/engines/director/castmember.cpp
+++ b/engines/director/castmember.cpp
@@ -659,16 +659,6 @@ Graphics::MacWidget *TextCastMember::createWidget(Common::Rect &bbox, Channel *c
 	return widget;
 }
 
-Common::Rect TextCastMember::getWidgetRect() {
-	Graphics::MacWidget *widget = createWidget(_initialRect, nullptr);
-	Common::Rect result = _initialRect;
-	if (widget) {
-		result = widget->_dims;
-		delete widget;
-	}
-	return result;
-}
-
 void TextCastMember::importRTE(byte *text) {
 	//assert(rteList.size() == 3);
 	//child0 is probably font data.
diff --git a/engines/director/castmember.h b/engines/director/castmember.h
index 80abac4f76..9bb64d57e9 100644
--- a/engines/director/castmember.h
+++ b/engines/director/castmember.h
@@ -72,7 +72,7 @@ public:
 	virtual bool isModified() { return _modified; }
 	virtual Graphics::MacWidget *createWidget(Common::Rect &bbox, Channel *channel) { return nullptr; }
 	virtual void updateFromWidget(Graphics::MacWidget *widget) {}
-	virtual Common::Rect getWidgetRect() { return _initialRect; }
+	virtual Common::Rect getInitialRect() { return _initialRect; }
 
 	virtual void setColors(uint32 *fgcolor, uint32 *bgcolor) { return; }
 	virtual uint32 getForeColor() { return 0; }
@@ -210,7 +210,6 @@ public:
 
 	void setText(const char *text);
 	virtual Graphics::MacWidget *createWidget(Common::Rect &bbox, Channel *channel) override;
-	virtual Common::Rect getWidgetRect() override;
 
 	virtual bool isEditable() override;
 	virtual void setEditable(bool editable) override;
diff --git a/engines/director/channel.cpp b/engines/director/channel.cpp
index 7a36e64c56..c9be048689 100644
--- a/engines/director/channel.cpp
+++ b/engines/director/channel.cpp
@@ -374,6 +374,15 @@ void Channel::replaceWidget() {
 		if (_widget) {
 			_widget->_priority = _priority;
 			_widget->draw();
+
+			// HACK: Account for the added dimensions for borders, etc.
+			if (_sprite->_cast->_type == kCastText || _sprite->_cast->_type == kCastButton) {
+				_sprite->_width = _widget->_dims.width();
+				_sprite->_height = _widget->_dims.height();
+
+				_width = _sprite->_width;
+				_height = _sprite->_height;
+			}
 		}
 	}
 }
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 83bd8f45c8..50b3f8c78c 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -183,7 +183,7 @@ void Sprite::setCast(uint16 castId) {
 			((TextCastMember *)_cast)->_buttonType = (ButtonType)(_spriteType - 8);
 		}
 
-		Common::Rect dims = _cast->getWidgetRect();
+		Common::Rect dims = _cast->getInitialRect();
 		_width = dims.width();
 		_height = dims.height();
 	} else {


Commit: 828595c9fc935854efc38988f69b5f10bdf21106
    https://github.com/scummvm/scummvm/commit/828595c9fc935854efc38988f69b5f10bdf21106
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-08-21T16:52:07-04:00

Commit Message:
DIRECTOR: Don't override shape dimensions

Changed paths:
    engines/director/sprite.cpp


diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 50b3f8c78c..537cf98748 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -183,9 +183,13 @@ void Sprite::setCast(uint16 castId) {
 			((TextCastMember *)_cast)->_buttonType = (ButtonType)(_spriteType - 8);
 		}
 
-		Common::Rect dims = _cast->getInitialRect();
-		_width = dims.width();
-		_height = dims.height();
+		// TODO: Respect sprite width/height settings. Need to determine how to read
+		// them properly.
+		if (_cast->_type != kCastShape) {
+			Common::Rect dims = _cast->getInitialRect();
+			_width = dims.width();
+			_height = dims.height();
+		}
 	} else {
 		warning("Sprite::setCast(): CastMember id %d(%s) has null member", castId, numToCastNum(castId));
 	}




More information about the Scummvm-git-logs mailing list