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)); |