diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qinputpanel.cpp | 34 | ||||
-rw-r--r-- | src/gui/kernel/qinputpanel.h | 2 | ||||
-rw-r--r-- | src/gui/kernel/qplatforminputcontext_qpa.cpp | 27 | ||||
-rw-r--r-- | src/gui/kernel/qplatforminputcontext_qpa.h | 12 | ||||
-rw-r--r-- | src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp | 5 | ||||
-rw-r--r-- | src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h | 2 |
6 files changed, 66 insertions, 16 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); diff --git a/src/gui/kernel/qinputpanel.h b/src/gui/kernel/qinputpanel.h index 292b01a8cf..4edc902104 100644 --- a/src/gui/kernel/qinputpanel.h +++ b/src/gui/kernel/qinputpanel.h @@ -62,7 +62,7 @@ class Q_GUI_EXPORT QInputPanel : public QObject Q_PROPERTY(QObject *inputItem READ inputItem WRITE setInputItem NOTIFY inputItemChanged) Q_PROPERTY(QRectF cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged) Q_PROPERTY(QRectF keyboardRectangle READ keyboardRectangle NOTIFY keyboardRectangleChanged) - Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged) + Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged) Q_PROPERTY(bool animating READ isAnimating NOTIFY animatingChanged) Q_ENUMS(Action) diff --git a/src/gui/kernel/qplatforminputcontext_qpa.cpp b/src/gui/kernel/qplatforminputcontext_qpa.cpp index 0313f69e5b..55b60279b8 100644 --- a/src/gui/kernel/qplatforminputcontext_qpa.cpp +++ b/src/gui/kernel/qplatforminputcontext_qpa.cpp @@ -90,12 +90,12 @@ QRectF QPlatformInputContext::keyboardRect() const return QRectF(); } -void QPlatformInputContext::emitKeyboardRectChanged() const +void QPlatformInputContext::emitKeyboardRectChanged() { emit qApp->inputPanel()->keyboardRectangleChanged(); } -bool QPlatformInputContext::isAnimating() +bool QPlatformInputContext::isAnimating() const { return false; } @@ -105,5 +105,28 @@ void QPlatformInputContext::emitAnimatingChanged() emit qApp->inputPanel()->animatingChanged(); } +void QPlatformInputContext::showInputPanel() +{ +} + +void QPlatformInputContext::hideInputPanel() +{ +} + +bool QPlatformInputContext::isInputPanelVisible() const +{ + return false; +} + +void QPlatformInputContext::emitInputPanelVisibleChanged() +{ + emit qApp->inputPanel()->visibleChanged(); +} + +// temporary function added to retain compatibility to old functionality, will be deprecated +bool QPlatformInputContext::handlesInputPanelVisibility() const +{ + return false; +} QT_END_NAMESPACE diff --git a/src/gui/kernel/qplatforminputcontext_qpa.h b/src/gui/kernel/qplatforminputcontext_qpa.h index 8321c0a29c..ab5b6726be 100644 --- a/src/gui/kernel/qplatforminputcontext_qpa.h +++ b/src/gui/kernel/qplatforminputcontext_qpa.h @@ -68,10 +68,18 @@ public: virtual void invokeAction(QInputPanel::Action, int cursorPosition); virtual bool filterEvent(const QEvent *event); virtual QRectF keyboardRect() const; - void emitKeyboardRectChanged() const; + void emitKeyboardRectChanged(); - virtual bool isAnimating(); + virtual bool isAnimating() const; void emitAnimatingChanged(); + + virtual void showInputPanel(); + virtual void hideInputPanel(); + virtual bool isInputPanelVisible() const; + void emitInputPanelVisibleChanged(); + + // temporary function added to retain compatibility to old functionality, will be deprecated + virtual bool handlesInputPanelVisibility() const; }; QT_END_NAMESPACE diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp index 0d0e240b37..67ee9da252 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp @@ -155,6 +155,11 @@ void QIBusPlatformInputContext::inputItemChanged() d->context->FocusOut(); } +// temporary function added to retain compatibility to old functionality, will be deprecated +bool QIBusPlatformInputContext::handlesInputPanelVisibility() const +{ + return true; +} void QIBusPlatformInputContext::commitText(const QDBusVariant &text) { diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h index 6008fc31aa..303b6f7cc0 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h @@ -63,6 +63,8 @@ public: Q_INVOKABLE bool x11FilterEvent(uint keyval, uint keycode, uint state, bool press); + virtual bool handlesInputPanelVisibility() const; + public Q_SLOTS: void commitText(const QDBusVariant &text); void updatePreeditText(const QDBusVariant &text, uint cursor_pos, bool visible); |