disable input method in QuickSelector

This commit is contained in:
Le Tan 2021-07-24 15:31:11 +08:00
parent f92e1a9791
commit 7fc7481cfb
4 changed files with 36 additions and 3 deletions

View File

@ -2,6 +2,8 @@
#include <QKeyEvent>
#include <QCoreApplication>
#include <QInputMethod>
#include <QGuiApplication>
#include <utils/widgetutils.h>
@ -98,3 +100,24 @@ void LineEdit::selectBaseName(QLineEdit *p_lineEdit)
int dotIndex = name.lastIndexOf('.');
p_lineEdit->setSelection(0, (dotIndex == -1) ? name.size() : dotIndex);
}
QVariant LineEdit::inputMethodQuery(Qt::InputMethodQuery p_query) const
{
if (p_query == Qt::ImEnabled) {
return m_inputMethodEnabled;
}
return QLineEdit::inputMethodQuery(p_query);
}
void LineEdit::setInputMethodEnabled(bool p_enabled)
{
if (m_inputMethodEnabled != p_enabled) {
m_inputMethodEnabled = p_enabled;
QInputMethod *im = QGuiApplication::inputMethod();
im->reset();
// Ask input method to query current state, which will call inputMethodQuery().
im->update(Qt::ImEnabled);
}
}

View File

@ -14,10 +14,18 @@ namespace vnotex
LineEdit(const QString &p_contents, QWidget *p_parent = nullptr);
QVariant inputMethodQuery(Qt::InputMethodQuery p_query) const Q_DECL_OVERRIDE;
void setInputMethodEnabled(bool p_enabled);
static void selectBaseName(QLineEdit *p_lineEdit);
protected:
void keyPressEvent(QKeyEvent *p_event) Q_DECL_OVERRIDE;
private:
// Whether enable input method.
bool m_inputMethodEnabled = true;
};
}

View File

@ -72,7 +72,8 @@ void QuickSelector::setupUI(const QString &p_title)
mainLayout->addWidget(new QLabel(p_title, this));
}
m_searchLineEdit = WidgetsFactory::createLineEdit(this);
m_searchLineEdit = dynamic_cast<LineEdit *>(WidgetsFactory::createLineEdit(this));
m_searchLineEdit->setInputMethodEnabled(false);
connect(m_searchLineEdit, &QLineEdit::textEdited,
this, &QuickSelector::searchAndFilter);
mainLayout->addWidget(m_searchLineEdit);

View File

@ -6,12 +6,13 @@
#include <QVariant>
#include <QVector>
class QLineEdit;
class QListWidget;
class QListWidgetItem;
namespace vnotex
{
class LineEdit;
struct QuickSelectorItem
{
QuickSelectorItem() = default;
@ -63,7 +64,7 @@ namespace vnotex
QVector<QuickSelectorItem> m_items;
QLineEdit *m_searchLineEdit = nullptr;
LineEdit *m_searchLineEdit = nullptr;
QListWidget *m_itemList = nullptr;