diff options
author | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2023-05-09 08:35:24 +0200 |
---|---|---|
committer | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2023-05-09 11:20:42 +0000 |
commit | 734f559b76b3fdaea621851e57a543e364c4a1a9 (patch) | |
tree | 694296acd032264c592e3a00a9fd721e6676bcec /src/plugins/terminal/terminalwidget.cpp | |
parent | 5ea6c34a2346732f340c2367e8c1b59ffa39554f (diff) | |
download | qt-creator-734f559b76b3fdaea621851e57a543e364c4a1a9.tar.gz |
Terminal: Fix cursor/viewport updates
Under some font sizes the cursor size and cell size were not correctly
aligned on the pixel grid, leaving behind artifacts of prior draws.
Change-Id: I25e6efdc44102f24672912e1e56c31be0c686b89
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Diffstat (limited to 'src/plugins/terminal/terminalwidget.cpp')
-rw-r--r-- | src/plugins/terminal/terminalwidget.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/plugins/terminal/terminalwidget.cpp b/src/plugins/terminal/terminalwidget.cpp index b6e48165f3..19ad1b8202 100644 --- a/src/plugins/terminal/terminalwidget.cpp +++ b/src/plugins/terminal/terminalwidget.cpp @@ -920,9 +920,13 @@ void TerminalWidget::paintCursor(QPainter &p) const QRectF cursorRect = QRectF(gridToGlobal(cursor.position), gridToGlobal({cursor.position.x() + cursorCellWidth, cursor.position.y()}, - true)); + true)) + .toAlignedRect(); - cursorRect.adjust(0, 0, 0, -1); + cursorRect.adjust(1, 1, -1, -1); + + QPen pen(Qt::white, 0, Qt::SolidLine); + p.setPen(pen); if (hasFocus()) { QPainter::CompositionMode oldMode = p.compositionMode(); @@ -1162,14 +1166,14 @@ QRect TerminalWidget::gridToViewport(QRect rect) const int numRows = rect.height(); int numCols = rect.width(); - QRect r{qFloor(rect.x() * m_cellSize.width()), - qFloor(startRow * m_cellSize.height()), - qCeil(numCols * m_cellSize.width()), - qCeil(numRows * m_cellSize.height())}; + QRectF r{rect.x() * m_cellSize.width(), + startRow * m_cellSize.height(), + numCols * m_cellSize.width(), + numRows * m_cellSize.height()}; r.translate(0, topMargin()); - return r; + return r.toAlignedRect(); } void TerminalWidget::updateViewport() |