QTextEdit::event: refactor into switch statement

Replace if/else snake, made more complex by handling of QT_NO_*
configurations. Move the unconditional cases to the top, which also
fixes the handling of ShortcutOverride and ToolTip events when Qt was
built with QT_NO_CONTEXTMENU.

Change-Id: I1e2cc2c39e3cef9fe29a71e48595756cff0d2949
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit 83f73df3e0e07242ce355fa12ae818fbb0ed6d03)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Volker Hilsheimer 2024-02-29 12:48:31 +01:00 committed by Qt Cherry-pick Bot
parent 67c5cbb8e1
commit fe5758e2d7

View File

@ -1080,28 +1080,38 @@ void QTextEdit::selectAll()
bool QTextEdit::event(QEvent *e)
{
Q_D(QTextEdit);
#ifndef QT_NO_CONTEXTMENU
if (e->type() == QEvent::ContextMenu
&& static_cast<QContextMenuEvent *>(e)->reason() == QContextMenuEvent::Keyboard) {
ensureCursorVisible();
const QPoint cursorPos = cursorRect().center();
QContextMenuEvent ce(QContextMenuEvent::Keyboard, cursorPos, d->viewport->mapToGlobal(cursorPos));
ce.setAccepted(e->isAccepted());
const bool result = QAbstractScrollArea::event(&ce);
e->setAccepted(ce.isAccepted());
return result;
} else if (e->type() == QEvent::ShortcutOverride || e->type() == QEvent::ToolTip) {
switch (e->type()) {
case QEvent::ShortcutOverride:
case QEvent::ToolTip:
d->sendControlEvent(e);
} else
break;
case QEvent::WindowActivate:
case QEvent::WindowDeactivate:
d->control->setPalette(palette());
break;
#ifndef QT_NO_CONTEXTMENU
case QEvent::ContextMenu:
if (static_cast<QContextMenuEvent *>(e)->reason() == QContextMenuEvent::Keyboard) {
ensureCursorVisible();
const QPoint cursorPos = cursorRect().center();
QContextMenuEvent ce(QContextMenuEvent::Keyboard, cursorPos, d->viewport->mapToGlobal(cursorPos));
ce.setAccepted(e->isAccepted());
const bool result = QAbstractScrollArea::event(&ce);
e->setAccepted(ce.isAccepted());
return result;
}
break;
#endif // QT_NO_CONTEXTMENU
#ifdef QT_KEYPAD_NAVIGATION
if (e->type() == QEvent::EnterEditFocus || e->type() == QEvent::LeaveEditFocus) {
case QEvent::EnterEditFocus:
case QEvent::LeaveEditFocus:
if (QApplicationPrivate::keypadNavigationEnabled())
d->sendControlEvent(e);
} else
break;
#endif
if (e->type() == QEvent::WindowActivate || e->type() == QEvent::WindowDeactivate)
d->control->setPalette(palette());
default:
break;
}
return QAbstractScrollArea::event(e);
}