mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 21:57:10 +02:00
Forward input method event from Dialogs::Widget to search field
This commit is contained in:
parent
98b58c1168
commit
65b62485be
2 changed files with 31 additions and 0 deletions
|
@ -82,6 +82,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "base/qt/qt_common_adapters.h"
|
||||
|
||||
#include <QtCore/QMimeData>
|
||||
#include <QtGui/QTextBlock>
|
||||
#include <QtWidgets/QScrollBar>
|
||||
#include <QtWidgets/QTextEdit>
|
||||
|
||||
|
@ -239,6 +240,8 @@ Widget::Widget(
|
|||
: nullptr)
|
||||
, _searchTimer([=] { searchMessages(); })
|
||||
, _singleMessageSearch(&controller->session()) {
|
||||
setAttribute(Qt::WA_InputMethodEnabled);
|
||||
|
||||
const auto makeChildListShown = [](PeerId peerId, float64 shown) {
|
||||
return InnerWidget::ChildListShown{ peerId, shown };
|
||||
};
|
||||
|
@ -3298,6 +3301,31 @@ void Widget::keyPressEvent(QKeyEvent *e) {
|
|||
}
|
||||
}
|
||||
|
||||
void Widget::inputMethodEvent(QInputMethodEvent *e) {
|
||||
const auto cursor = _search->rawTextEdit()->textCursor();
|
||||
bool isGettingInput = !e->commitString().isEmpty()
|
||||
|| e->preeditString() != cursor.block().layout()->preeditAreaText()
|
||||
|| e->replacementLength() > 0;
|
||||
|
||||
if (!isGettingInput || _postponeProcessSearchFocusChange) {
|
||||
Window::AbstractSectionWidget::inputMethodEvent(e);
|
||||
return;
|
||||
}
|
||||
|
||||
// This delay in search focus processing allows us not to create
|
||||
// _suggestions in case the event inserts some non-whitespace search
|
||||
// query while still show _suggestions animated, if it is a space.
|
||||
_postponeProcessSearchFocusChange = true;
|
||||
_search->setFocusFast();
|
||||
QCoreApplication::sendEvent(_search->rawTextEdit(), e);
|
||||
_postponeProcessSearchFocusChange = false;
|
||||
processSearchFocusChange();
|
||||
}
|
||||
|
||||
QVariant Widget::inputMethodQuery(Qt::InputMethodQuery query) const {
|
||||
return _search->rawTextEdit()->inputMethodQuery(query);
|
||||
}
|
||||
|
||||
bool Widget::redirectToSearchPossible() const {
|
||||
return !_openedFolder
|
||||
&& !_openedForum
|
||||
|
|
|
@ -135,6 +135,8 @@ public:
|
|||
bool cancelSearch();
|
||||
bool cancelSearchByMouseBack();
|
||||
|
||||
QVariant inputMethodQuery(Qt::InputMethodQuery query) const override;
|
||||
|
||||
~Widget();
|
||||
|
||||
protected:
|
||||
|
@ -144,6 +146,7 @@ protected:
|
|||
void dropEvent(QDropEvent *e) override;
|
||||
void resizeEvent(QResizeEvent *e) override;
|
||||
void keyPressEvent(QKeyEvent *e) override;
|
||||
void inputMethodEvent(QInputMethodEvent *e) override;
|
||||
void paintEvent(QPaintEvent *e) override;
|
||||
|
||||
private:
|
||||
|
|
Loading…
Add table
Reference in a new issue