diff options
Diffstat (limited to 'src/gui/kernel/qinputpanel.cpp')
-rw-r--r-- | src/gui/kernel/qinputpanel.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/src/gui/kernel/qinputpanel.cpp b/src/gui/kernel/qinputpanel.cpp index a024a823f3..a7978c6aff 100644 --- a/src/gui/kernel/qinputpanel.cpp +++ b/src/gui/kernel/qinputpanel.cpp @@ -118,29 +118,42 @@ QRectF QInputPanel::keyboardRectangle() void QInputPanel::show() { - setVisible(true); + Q_D(QInputPanel); + QPlatformInputContext *ic = d->platformInputContext(); + if (ic && ic->handlesInputPanelVisibility()) + ic->showInputPanel(); + else if (!d->visible) { + d->visible = true; + emit visibleChanged(); + } } void QInputPanel::hide() { - setVisible(false); + Q_D(QInputPanel); + QPlatformInputContext *ic = d->platformInputContext(); + if (ic && ic->handlesInputPanelVisibility()) + ic->hideInputPanel(); + else if (d->visible) { + d->visible = false; + emit visibleChanged(); + } } bool QInputPanel::visible() const { Q_D(const QInputPanel); - - return d->visible; + QPlatformInputContext *ic = d->platformInputContext(); + if (ic && ic->handlesInputPanelVisibility()) + return ic->isInputPanelVisible(); + else + return d->visible; + return false; } void QInputPanel::setVisible(bool visible) { - Q_D(QInputPanel); - if (d->visible == visible) - return; - - d->visible = visible; - emit visibleChanged(); + visible ? show() : hide(); } bool QInputPanel::isAnimating() const @@ -152,7 +165,6 @@ bool QInputPanel::isAnimating() const return false; } - void QInputPanel::update(Qt::InputMethodQueries queries) { Q_D(QInputPanel); |