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()); t.translate(p.x(), p.y());
QGuiApplication::inputMethod()->setInputItemTransform(t); QGuiApplication::inputMethod()->setInputItemTransform(t);
QGuiApplication::inputMethod()->setInputItemRectangle(q->rect()); 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); return inputMethodQuery(Qt::ImCursorPosition);
case Qt::ImHints: case Qt::ImHints:
return (int)inputMethodHints(); return (int)inputMethodHints();
case Qt::ImInputItemClipRectangle:
return d_func()->clipRect();
default: default:
return QVariant(); return QVariant();
} }

View File

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