From e941b37fcc715fc20d7365cae21cd657a215cf8f Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 11 Oct 2011 13:10:50 +0300 Subject: Move input panel visibility ownership from QInputPanel to QPlatformInputContext Now QInputPanel::visible() can be set true even when platform doesn't provide a virtual keyboard. Like keyboard geometry, visibility should be dictated by the platform plugin and not QInputPanel, whose role is more like that of a mediator. QInputPanel::show() and ::hide() calls should be treated as requests that may fail. Changed the QInputPanel's visible property to read-only as a setter that may fail is not really a setter, show() and hide() should be used instead. Enabling the new functionality cannot be activated immediatelly without breaking existing keyboards, added a temporary function handlesInputPanelVisibility that handovers the responsiblity of updating input panel visibility to QInputContextPlatform only once QInputContextPlatform says that it is able to handle it. Change-Id: Ideecaf7225cc3971f33a0ac976bd92cf7767475b Reviewed-on: http://codereview.qt-project.org/6429 Sanity-Review: Qt Sanity Bot Reviewed-by: Pekka Vuorela Reviewed-by: Lars Knoll --- src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp | 5 +++++ src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h | 2 ++ 2 files changed, 7 insertions(+) (limited to 'src/plugins/platforminputcontexts') 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); -- cgit v1.2.3