mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-04 01:46:42 +00:00
ZVISION: Limit input text to the width of the input control
This is to prevent the player from entering ridiculously long savegame descriptions.
This commit is contained in:
parent
b7b4e9cc58
commit
8725f2cff2
@ -110,6 +110,10 @@ InputControl::InputControl(ZVision *engine, uint32 key, Common::SeekableReadStre
|
||||
_engine->getScriptManager()->trimCommentsAndWhiteSpace(&line);
|
||||
getParams(line, param, values);
|
||||
}
|
||||
|
||||
_maxTxtWidth = _textRectangle.width();
|
||||
if (_animation)
|
||||
_maxTxtWidth -= _animation->getWidth();
|
||||
}
|
||||
|
||||
InputControl::~InputControl() {
|
||||
@ -208,12 +212,20 @@ bool InputControl::process(uint32 deltaTimeInMillis) {
|
||||
Graphics::Surface txt;
|
||||
txt.copyFrom(*_background);
|
||||
|
||||
int32 oldTxtWidth = _txtWidth;
|
||||
|
||||
if (!_readOnly || !_focused)
|
||||
_txtWidth = _engine->getTextRenderer()->drawTxt(_currentInputText, _stringInit, txt);
|
||||
else
|
||||
_txtWidth = _engine->getTextRenderer()->drawTxt(_currentInputText, _stringChooserInit, txt);
|
||||
|
||||
_engine->getRenderManager()->blitSurfaceToBkg(txt, _textRectangle.left, _textRectangle.top);
|
||||
if (_readOnly || _txtWidth <= _maxTxtWidth)
|
||||
_engine->getRenderManager()->blitSurfaceToBkg(txt, _textRectangle.left, _textRectangle.top);
|
||||
else {
|
||||
// Assume the last character caused the overflow.
|
||||
_currentInputText.deleteLastChar();
|
||||
_txtWidth = oldTxtWidth;
|
||||
}
|
||||
|
||||
txt.free();
|
||||
}
|
||||
|
@ -56,6 +56,7 @@ private:
|
||||
bool _readOnly;
|
||||
|
||||
int16 _txtWidth;
|
||||
int16 _maxTxtWidth;
|
||||
Video::VideoDecoder *_animation;
|
||||
int32 _frameDelay;
|
||||
int16 _frame;
|
||||
|
Loading…
x
Reference in New Issue
Block a user