Manage keyboard modifier state in QPlainTextEdit

Gets rid of a call to QApplication::keyboardModifiers, at the expense
of some more bytes in QPlainTextEditPrivate.

Task-number: QTBUG-73829
Change-Id: I0394cb773034e832cffe5fa643ac308493f815b4
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
bb10
Volker Hilsheimer 2020-07-02 11:16:39 +02:00
parent b5ae228aa0
commit 634ce491e8
2 changed files with 7 additions and 1 deletions

View File

@ -759,6 +759,7 @@ QPlainTextEditPrivate::QPlainTextEditPrivate()
tabChangesFocus(false),
lineWrap(QPlainTextEdit::WidgetWidth),
wordWrap(QTextOption::WrapAtWordBoundaryOrAnywhere),
keyboardModifiers{},
clickCausedFocus(0), placeholderVisible(1),
topLine(0), topLineFracture(0),
pageUpDownLastCursorYIsValid(false)
@ -1621,7 +1622,7 @@ void QPlainTextEdit::timerEvent(QTimerEvent *e)
const QPoint globalPos = QCursor::pos();
pos = d->viewport->mapFromGlobal(globalPos);
QMouseEvent ev(QEvent::MouseMove, pos, d->viewport->mapTo(d->viewport->topLevelWidget(), pos), globalPos,
Qt::LeftButton, Qt::LeftButton, QGuiApplication::keyboardModifiers());
Qt::LeftButton, Qt::LeftButton, d->keyboardModifiers);
mouseMoveEvent(&ev);
}
int deltaY = qMax(pos.y() - visible.top(), visible.bottom() - pos.y()) - visible.height();
@ -1686,6 +1687,7 @@ void QPlainTextEdit::setPlainText(const QString &text)
void QPlainTextEdit::keyPressEvent(QKeyEvent *e)
{
Q_D(QPlainTextEdit);
d->keyboardModifiers = e->modifiers();
#ifdef QT_KEYPAD_NAVIGATION
switch (e->key()) {
@ -1833,6 +1835,9 @@ void QPlainTextEdit::keyPressEvent(QKeyEvent *e)
*/
void QPlainTextEdit::keyReleaseEvent(QKeyEvent *e)
{
Q_D(QPlainTextEdit);
d->keyboardModifiers = e->modifiers();
#ifdef QT_KEYPAD_NAVIGATION
Q_D(QPlainTextEdit);
if (QApplicationPrivate::keypadNavigationEnabled()) {

View File

@ -152,6 +152,7 @@ public:
QPlainTextEdit::LineWrapMode lineWrap;
QTextOption::WrapMode wordWrap;
Qt::KeyboardModifiers keyboardModifiers;
uint showCursorOnInitialShow : 1;
uint backgroundVisible : 1;