summaryrefslogtreecommitdiff
path: root/src/plugins/terminal/terminalwidget.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2023-03-24 22:02:23 +0100
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2023-03-27 09:29:47 +0000
commitaf5f702f54b696be47e4fd36bc0dc88e03d7c981 (patch)
tree967e87b3f49da94ebc350b1606a8a3e8546b9636 /src/plugins/terminal/terminalwidget.cpp
parent83759e80834ea33f8f67c68123a4fe9e13df193f (diff)
downloadqt-creator-af5f702f54b696be47e4fd36bc0dc88e03d7c981.tar.gz
Terminal: Make ESC key behavior configurable
Change-Id: I806870c5dd7edbcd3ac2642849cca82f1939ce01 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Diffstat (limited to 'src/plugins/terminal/terminalwidget.cpp')
-rw-r--r--src/plugins/terminal/terminalwidget.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/plugins/terminal/terminalwidget.cpp b/src/plugins/terminal/terminalwidget.cpp
index bb2f5e210a..cc1b3b9f26 100644
--- a/src/plugins/terminal/terminalwidget.cpp
+++ b/src/plugins/terminal/terminalwidget.cpp
@@ -808,6 +808,7 @@ bool TerminalWidget::paintFindMatches(QPainter &p,
}
break;
}
+
if (it == m_search->hits().constEnd())
return false;
@@ -821,13 +822,11 @@ bool TerminalWidget::paintSelection(QPainter &p, const QRectF &cellRect, const Q
bool isInSelection = false;
const int pos = m_surface->gridToPos(gridPos);
- if (m_selection) {
+ if (m_selection)
isInSelection = pos >= m_selection->start && pos < m_selection->end;
- }
- if (isInSelection) {
+ if (isInSelection)
p.fillRect(cellRect, m_currentColors[ColorIndex::Selection]);
- }
return isInSelection;
}
@@ -1049,6 +1048,19 @@ void TerminalWidget::keyPressEvent(QKeyEvent *event)
}
if (event->key() == Qt::Key_Escape) {
+ bool sendToTerminal = TerminalSettings::instance().sendEscapeToTerminal.value();
+ bool send = false;
+ if (sendToTerminal && event->modifiers() == Qt::NoModifier)
+ send = true;
+ else if (!sendToTerminal && event->modifiers() == Qt::ShiftModifier)
+ send = true;
+
+ if (send) {
+ event->setModifiers(Qt::NoModifier);
+ m_surface->sendKey(event);
+ return;
+ }
+
if (m_selection)
TerminalCommands::widgetActions().clearSelection.trigger();
else {