From 9c02a924cae9ca6ffc71da9e1fce02e94776944f Mon Sep 17 00:00:00 2001 From: Jan Arve Saether Date: Thu, 28 Apr 2016 09:23:52 +0200 Subject: 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 --- src/widgets/kernel/qwidget.cpp | 3 +++ src/widgets/widgets/qplaintextedit.cpp | 7 ++++++- src/widgets/widgets/qtextedit.cpp | 7 ++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 5826116a96..8d5f275d73 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -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(); } diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 9675e5e9f2..27f1b16f60 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -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()) { diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index df69b49687..af6d13a647 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -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()) { -- cgit v1.2.3