diff options
| -rw-r--r-- | engines/glk/conf.cpp | 3 | ||||
| -rw-r--r-- | engines/glk/fonts.cpp | 10 | ||||
| -rw-r--r-- | engines/glk/fonts.h | 6 | ||||
| -rw-r--r-- | engines/glk/window_text_grid.cpp | 7 | 
4 files changed, 20 insertions, 6 deletions
diff --git a/engines/glk/conf.cpp b/engines/glk/conf.cpp index 4e7ed24b02..5c6bc761bc 100644 --- a/engines/glk/conf.cpp +++ b/engines/glk/conf.cpp @@ -124,9 +124,6 @@ Conf::Conf(InterpreterType interpType) {  	get("caretcolor", _propInfo._caretColor, nullptr);  	get("caretcolor", _propInfo._caretSave, nullptr);  	get("caretshape", _propInfo._caretShape, 2); -	_monoInfo._caretColor = _propInfo._caretColor; -	_monoInfo._caretSave = _propInfo._caretSave; -	_monoInfo._caretShape = _propInfo._caretShape;  	_propInfo._linkStyle = _monoInfo._linkStyle = ConfMan.hasKey("linkstyle")  		&& !strToInt(ConfMan.get("linkstyle").c_str()) ? 0 : 1; diff --git a/engines/glk/fonts.cpp b/engines/glk/fonts.cpp index 12ae7c6489..6ef500c581 100644 --- a/engines/glk/fonts.cpp +++ b/engines/glk/fonts.cpp @@ -27,9 +27,17 @@  namespace Glk { +uint FontInfo::_caretColor; +uint FontInfo::_caretSave; +int FontInfo::_caretShape; + +  FontInfo::FontInfo() : _size(0), _aspect(0), _cellW(0), _cellH(0), _leading(0), _baseLine(0),  		_linkStyle(0), _moreFont(PROPB), _moreAlign(0), _caps(0), _linkColor(0), _linkSave(0), -		_moreColor(0), _moreSave(0), _caretShape(0), _caretColor(0), _caretSave(0) { +		_moreColor(0), _moreSave(0) { +	_caretShape = 0; +	_caretColor = 0; +	_caretSave = 0;  }  void FontInfo::drawCaret(const Point &pos) { diff --git a/engines/glk/fonts.h b/engines/glk/fonts.h index 156f4d44f8..afe28252e6 100644 --- a/engines/glk/fonts.h +++ b/engines/glk/fonts.h @@ -36,6 +36,10 @@ enum STYLES { FONTR, FONTB, FONTI, FONTZ };   * Font configuration info   */  struct FontInfo { +public: +	static uint _caretColor, _caretSave; +	static int _caretShape; +public:  	double _size;  	double _aspect;  	int _cellW, _cellH; @@ -48,8 +52,6 @@ struct FontInfo {  	int _moreAlign;  	Common::String _morePrompt;  	int _caps; -	uint _caretColor, _caretSave; -	int _caretShape;  	/**  	 * Constructor diff --git a/engines/glk/window_text_grid.cpp b/engines/glk/window_text_grid.cpp index be097251fc..e0459e0b2e 100644 --- a/engines/glk/window_text_grid.cpp +++ b/engines/glk/window_text_grid.cpp @@ -624,6 +624,13 @@ void TextGridWindow::redraw() {  			w += _bbox.right - (x + w);  			screen.fillRect(Rect::fromXYWH(x, y, w, _font._leading), bgcolor); +			// Draw the caret if necessary +			if (_windows->getFocusWindow() == this && i == _curY && +					(_lineRequest || _lineRequestUni || _charRequest || _charRequestUni)) { +				_font.drawCaret(Point((x0 + _curX * _font._cellW) * GLI_SUBPIX, y + _font._baseLine)); +			} + +			// Write out the text  			for (k = a, o = x; k < b; k++, o += _font._cellW) {  				screen.drawStringUni(Point(o * GLI_SUBPIX, y + _font._baseLine), font,  									 fgcolor, Common::U32String(&ln->_chars[k], 1));  | 
