Add Qt::ImInputItemClipRectangle support to widgets

Let widgets respond to ImInputItemClipRectangle inputMethodQuery and
notify about potential changes with QInputMethod::update()

Change-Id: I01b2c53273df207d26107b237a7096fe53d1b0a5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
This commit is contained in:
Jan Arve Saether 2016-04-28 09:23:52 +02:00 committed by Jan Arve Sæther
parent 9180797247
commit 9c02a924ca
3 changed files with 15 additions and 2 deletions

View File

@ -385,6 +385,7 @@ void QWidgetPrivate::updateWidgetTransform(QEvent *event)
t.translate(p.x(), p.y());
QGuiApplication::inputMethod()->setInputItemTransform(t);
QGuiApplication::inputMethod()->setInputItemRectangle(q->rect());
QGuiApplication::inputMethod()->update(Qt::ImInputItemClipRectangle);
}
}
@ -9774,6 +9775,8 @@ QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
return inputMethodQuery(Qt::ImCursorPosition);
case Qt::ImHints:
return (int)inputMethodHints();
case Qt::ImInputItemClipRectangle:
return d_func()->clipRect();
default:
return QVariant();
}

View File

@ -2198,8 +2198,13 @@ QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const
{
Q_D(const QPlainTextEdit);
if (query == Qt::ImHints)
switch (query) {
case Qt::ImHints:
case Qt::ImInputItemClipRectangle:
return QWidget::inputMethodQuery(query);
default:
break;
}
const QPointF offset = contentOffset();
switch (argument.type()) {

View File

@ -1728,8 +1728,13 @@ QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const
{
Q_D(const QTextEdit);
if (query == Qt::ImHints)
switch (query) {
case Qt::ImHints:
case Qt::ImInputItemClipRectangle:
return QWidget::inputMethodQuery(query);
default:
break;
}
const QPointF offset(-d->horizontalOffset(), -d->verticalOffset());
switch (argument.type()) {