forked from qt-creator/qt-creator
Terminal: Implement scroll keyboard shortcuts
Change-Id: I354e6f63f89893ca057d17fab9810ea5c3dece7d Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
@@ -647,6 +647,11 @@ void TerminalSurface::sendFocus(bool hasFocus)
|
|||||||
vterm_state_focus_out(vts);
|
vterm_state_focus_out(vts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TerminalSurface::isInAltScreen()
|
||||||
|
{
|
||||||
|
return d->m_altscreen;
|
||||||
|
}
|
||||||
|
|
||||||
void TerminalSurface::setWriteToPty(WriteToPty writeToPty)
|
void TerminalSurface::setWriteToPty(WriteToPty writeToPty)
|
||||||
{
|
{
|
||||||
d->m_writeToPty = writeToPty;
|
d->m_writeToPty = writeToPty;
|
||||||
|
@@ -105,6 +105,7 @@ public:
|
|||||||
void mouseButton(Qt::MouseButton button, bool pressed, Qt::KeyboardModifiers modifiers);
|
void mouseButton(Qt::MouseButton button, bool pressed, Qt::KeyboardModifiers modifiers);
|
||||||
|
|
||||||
void sendFocus(bool hasFocus);
|
void sendFocus(bool hasFocus);
|
||||||
|
bool isInAltScreen();
|
||||||
signals:
|
signals:
|
||||||
void invalidated(QRect grid);
|
void invalidated(QRect grid);
|
||||||
void fullSizeChanged(QSize newSize);
|
void fullSizeChanged(QSize newSize);
|
||||||
|
@@ -950,7 +950,33 @@ void TerminalView::keyPressEvent(QKeyEvent *event)
|
|||||||
|
|
||||||
event->accept();
|
event->accept();
|
||||||
|
|
||||||
|
if (d->m_surface->isInAltScreen()) {
|
||||||
d->m_surface->sendKey(event);
|
d->m_surface->sendKey(event);
|
||||||
|
} else {
|
||||||
|
switch (event->key()) {
|
||||||
|
case Qt::Key_PageDown:
|
||||||
|
verticalScrollBar()->setValue(qBound(
|
||||||
|
0,
|
||||||
|
verticalScrollBar()->value() + d->m_surface->liveSize().height(),
|
||||||
|
verticalScrollBar()->maximum()));
|
||||||
|
break;
|
||||||
|
case Qt::Key_PageUp:
|
||||||
|
verticalScrollBar()->setValue(qBound(
|
||||||
|
0,
|
||||||
|
verticalScrollBar()->value() - d->m_surface->liveSize().height(),
|
||||||
|
verticalScrollBar()->maximum()));
|
||||||
|
break;
|
||||||
|
case Qt::Key_End:
|
||||||
|
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
|
||||||
|
break;
|
||||||
|
case Qt::Key_Home:
|
||||||
|
verticalScrollBar()->setValue(0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
d->m_surface->sendKey(event);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TerminalView::keyReleaseEvent(QKeyEvent *event)
|
void TerminalView::keyReleaseEvent(QKeyEvent *event)
|
||||||
|
@@ -42,7 +42,6 @@
|
|||||||
#include <QPixmapCache>
|
#include <QPixmapCache>
|
||||||
#include <QRawFont>
|
#include <QRawFont>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QScrollBar>
|
|
||||||
#include <QTextItem>
|
#include <QTextItem>
|
||||||
#include <QTextLayout>
|
#include <QTextLayout>
|
||||||
#include <QToolTip>
|
#include <QToolTip>
|
||||||
|
Reference in New Issue
Block a user