blob: 4edd46ff0e7c6df0624c1a63446c1a24c1750e7a (
plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | // Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#include"qinputcontrol_p.h"#include <QtGui/qevent.h> QT_BEGIN_NAMESPACE QInputControl::QInputControl(Type type, QObject *parent):QObject(parent),m_type(type){}QInputControl::QInputControl(Type type, QObjectPrivate &dd, QObject *parent):QObject(dd, parent),m_type(type){}boolQInputControl::isAcceptableInput(const QKeyEvent *event)const{const QString text = event->text();if(text.isEmpty())return false;const QChar c = text.at(0);// Formatting characters such as ZWNJ, ZWJ, RLM, etc. This needs to go before the// next test, since CTRL+SHIFT is sometimes used to input it on Windows.if(c.category() ==QChar::Other_Format)return true;// QTBUG-35734: ignore Ctrl/Ctrl+Shift; accept only AltGr (Alt+Ctrl) on German keyboardsif(event->modifiers() ==Qt::ControlModifier || event->modifiers() == (Qt::ShiftModifier |Qt::ControlModifier)) {return false;}if(c.isPrint())return true;if(c.category() ==QChar::Other_PrivateUse)return true;if(c.isHighSurrogate() && text.size() >1&& text.at(1).isLowSurrogate())return true;if(m_type == TextEdit && c == u'\t')return true;return false;}boolQInputControl::isCommonTextEditShortcut(const QKeyEvent *ke){if(ke->modifiers() ==Qt::NoModifier || ke->modifiers() ==Qt::ShiftModifier || ke->modifiers() ==Qt::KeypadModifier) {if(ke->key() <Qt::Key_Escape) {return true;}else{switch(ke->key()) {caseQt::Key_Return:caseQt::Key_Enter:caseQt::Key_Delete:caseQt::Key_Home:caseQt::Key_End:caseQt::Key_Backspace:caseQt::Key_Left:caseQt::Key_Right:caseQt::Key_Up:caseQt::Key_Down:caseQt::Key_Tab:return true;default:break;}}#if QT_CONFIG(shortcut)}else if(ke->matches(QKeySequence::Copy)|| ke->matches(QKeySequence::Paste)|| ke->matches(QKeySequence::Cut)|| ke->matches(QKeySequence::Redo)|| ke->matches(QKeySequence::Undo)|| ke->matches(QKeySequence::MoveToNextWord)|| ke->matches(QKeySequence::MoveToPreviousWord)|| ke->matches(QKeySequence::MoveToStartOfDocument)|| ke->matches(QKeySequence::MoveToEndOfDocument)|| ke->matches(QKeySequence::SelectNextWord)|| ke->matches(QKeySequence::SelectPreviousWord)|| ke->matches(QKeySequence::SelectStartOfLine)|| ke->matches(QKeySequence::SelectEndOfLine)|| ke->matches(QKeySequence::SelectStartOfBlock)|| ke->matches(QKeySequence::SelectEndOfBlock)|| ke->matches(QKeySequence::SelectStartOfDocument)|| ke->matches(QKeySequence::SelectEndOfDocument)|| ke->matches(QKeySequence::SelectAll)) {return true;#endif}return false;} QT_END_NAMESPACE #include"moc_qinputcontrol_p.cpp"
|