summaryrefslogtreecommitdiff
path: root/src/plugins/terminal/terminalwidget.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2023-05-09 08:35:24 +0200
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2023-05-09 11:20:42 +0000
commit734f559b76b3fdaea621851e57a543e364c4a1a9 (patch)
tree694296acd032264c592e3a00a9fd721e6676bcec /src/plugins/terminal/terminalwidget.cpp
parent5ea6c34a2346732f340c2367e8c1b59ffa39554f (diff)
downloadqt-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.cpp18
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()