diff --git a/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp b/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp index c6f872431..781b0befa 100644 --- a/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp +++ b/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp @@ -576,6 +576,10 @@ bool FieldAutocomplete::eventFilter(QObject *obj, QEvent *e) { emit moderateKeyActivate(ev->key(), &handled); return handled; } + } else if (ev->modifiers() & Qt::ControlModifier) { + if (ev->key() == Qt::Key_Enter || ev->key() == Qt::Key_Return) { + return _inner->chooseSelected(ChooseMethod::ByCtrlEnter); + } } } return QWidget::eventFilter(obj, e); @@ -913,7 +917,11 @@ void FieldAutocompleteInner::mousePressEvent(QMouseEvent *e) { selectByMouse(e->globalPos()); } else if (_srows->empty()) { if (e->button() == Qt::LeftButton) { - chooseSelected(FieldAutocomplete::ChooseMethod::ByClick); + if (e->modifiers() & Qt::ControlModifier) { + chooseSelected(FieldAutocomplete::ChooseMethod::ByCtrlClick); + } else { + chooseSelected(FieldAutocomplete::ChooseMethod::ByClick); + } } else if (e->button() == Qt::RightButton) { chooseSelected(FieldAutocomplete::ChooseMethod::ByRightClick); } @@ -940,7 +948,11 @@ void FieldAutocompleteInner::mouseReleaseEvent(QMouseEvent *e) { if (_sel < 0 || _sel != pressed || _srows->empty()) return; if (e->button() == Qt::LeftButton) { - chooseSelected(FieldAutocomplete::ChooseMethod::ByClick); + if (e->modifiers() & Qt::ControlModifier) { + chooseSelected(FieldAutocomplete::ChooseMethod::ByCtrlClick); + } else { + chooseSelected(FieldAutocomplete::ChooseMethod::ByClick); + } } else if (e->button() == Qt::RightButton) { chooseSelected(FieldAutocomplete::ChooseMethod::ByRightClick); } diff --git a/Telegram/SourceFiles/chat_helpers/field_autocomplete.h b/Telegram/SourceFiles/chat_helpers/field_autocomplete.h index 91c0c5d85..4a3194384 100644 --- a/Telegram/SourceFiles/chat_helpers/field_autocomplete.h +++ b/Telegram/SourceFiles/chat_helpers/field_autocomplete.h @@ -72,6 +72,8 @@ public: ByTab, ByClick, ByRightClick, + ByCtrlEnter, + ByCtrlClick, }; bool chooseSelected(ChooseMethod method) const; diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 61e28e96e..8c10c2f80 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -1013,7 +1013,10 @@ void HistoryWidget::start() { void HistoryWidget::onMentionInsert(UserData *user, FieldAutocomplete::ChooseMethod method) { QString replacement, entityTag; - if (method == FieldAutocomplete::ChooseMethod::ByRightClick || user->username.isEmpty()) { + if (user->username.isEmpty() + || method == FieldAutocomplete::ChooseMethod::ByRightClick + || method == FieldAutocomplete::ChooseMethod::ByCtrlEnter + || method == FieldAutocomplete::ChooseMethod::ByCtrlClick) { replacement = user->firstName; if (replacement.isEmpty()) { replacement = user->name;