add QInputMethodQueryEvent
QInputMethodQueryEvent will replace the old inputMethodHints() and inputMethodQuery() APIs in QWidget. It has the advantage that it works nicely with any kind of QObject.bb10
parent
4363d836f6
commit
407a6fe798
|
|
@ -1488,7 +1488,8 @@ public:
|
|||
ImSurroundingText,
|
||||
ImCurrentSelection,
|
||||
ImMaximumTextLength,
|
||||
ImAnchorPosition
|
||||
ImAnchorPosition,
|
||||
ImHints
|
||||
};
|
||||
|
||||
enum InputMethodHint {
|
||||
|
|
|
|||
|
|
@ -296,6 +296,8 @@ public:
|
|||
|
||||
Expose = 208,
|
||||
|
||||
InputMethodQuery = 209,
|
||||
|
||||
// 512 reserved for Qt Jambi's MetaCall event
|
||||
// 513 reserved for Qt Jambi's DeleteOnMainThread event
|
||||
|
||||
|
|
|
|||
|
|
@ -1755,6 +1755,53 @@ void QInputMethodEvent::setCommitString(const QString &commitString, int replace
|
|||
\sa replacementStart(), setCommitString()
|
||||
*/
|
||||
|
||||
|
||||
/*! \class QInputMethodQueryEvent
|
||||
|
||||
This event is sent by the input context to input objects.
|
||||
|
||||
It is used by the
|
||||
input method to query a set of properties of the object to be
|
||||
able to support complex input method operations as support for
|
||||
surrounding text and reconversions.
|
||||
|
||||
query() specifies which property is queried.
|
||||
|
||||
The object should call setValue() on the event to fill in the requested
|
||||
data before calling accept().
|
||||
*/
|
||||
QInputMethodQueryEvent::QInputMethodQueryEvent(Qt::InputMethodQuery query)
|
||||
: QEvent(InputMethodQuery),
|
||||
m_query(query)
|
||||
{
|
||||
}
|
||||
|
||||
QInputMethodQueryEvent::~QInputMethodQueryEvent()
|
||||
{
|
||||
}
|
||||
|
||||
/*!
|
||||
\fn Qt::InputMethodQuery QInputMethodQueryEvent::query() const
|
||||
|
||||
returns the type of data queried.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QVariant QInputMethodQueryEvent::value() const
|
||||
|
||||
returns the value set by the receiving object. Mainly used by the input method.
|
||||
|
||||
\sa setValue()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QVariant QInputMethodQueryEvent::setValue()
|
||||
|
||||
Used by the receiving object to set the value requested by query().
|
||||
|
||||
\sa setValue()
|
||||
*/
|
||||
|
||||
#ifndef QT_NO_TABLETEVENT
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -427,6 +427,22 @@ private:
|
|||
int replace_from;
|
||||
int replace_length;
|
||||
};
|
||||
|
||||
class Q_GUI_EXPORT QInputMethodQueryEvent : public QEvent
|
||||
{
|
||||
public:
|
||||
QInputMethodQueryEvent(Qt::InputMethodQuery query);
|
||||
~QInputMethodQueryEvent();
|
||||
|
||||
Qt::InputMethodQuery query() const { return m_query; }
|
||||
|
||||
void setValue(const QVariant &v) { m_value = v; }
|
||||
QVariant value() const { return m_value; }
|
||||
private:
|
||||
Qt::InputMethodQuery m_query;
|
||||
QVariant m_value;
|
||||
};
|
||||
|
||||
#endif // QT_NO_INPUTMETHOD
|
||||
|
||||
#ifndef QT_NO_DRAGANDDROP
|
||||
|
|
|
|||
|
|
@ -8297,6 +8297,21 @@ bool QWidget::event(QEvent *event)
|
|||
inputMethodEvent((QInputMethodEvent *) event);
|
||||
break;
|
||||
|
||||
case QEvent::InputMethodQuery:
|
||||
if (testAttribute(Qt::WA_InputMethodEnabled)) {
|
||||
QInputMethodQueryEvent *query = static_cast<QInputMethodQueryEvent *>(event);
|
||||
QVariant v = inputMethodQuery(query->query());
|
||||
|
||||
if (query->query() == Qt::ImMicroFocus) {
|
||||
QRect r = v.toRect();
|
||||
v = QRect(mapToGlobal(r.topLeft()), r.size());
|
||||
}
|
||||
|
||||
query->setValue(v);
|
||||
query->accept();
|
||||
break;
|
||||
}
|
||||
|
||||
case QEvent::PolishRequest:
|
||||
ensurePolished();
|
||||
break;
|
||||
|
|
@ -9215,6 +9230,8 @@ QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
|
|||
case Qt::ImAnchorPosition:
|
||||
// Fallback.
|
||||
return inputMethodQuery(Qt::ImCursorPosition);
|
||||
case Qt::ImHints:
|
||||
return (int)inputMethodHints();
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue