diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2015-01-05 16:06:44 +0200 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2015-01-16 09:08:01 +0200 |
commit | e883a6a310e804a8abfed10502bc4edffe547b6a (patch) | |
tree | 03e29f59bce2de1109fbaf1d193ff630dc8b0251 | |
parent | a90f6bb81d2a23dc0d56ab5feab05160b6923189 (diff) |
Add hybrid app/desktop mode
This change allows the application to prevent creation of desktop
InputPanel and make its own instance of InputPanel work in the
application container.
Rationale for this change is to make it easier for running tests.
Change-Id: I63bfddfb03121b30900fbe04c4f742b466fc2deb
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
-rw-r--r-- | src/virtualkeyboard/declarativeinputcontext.cpp | 3 | ||||
-rw-r--r-- | src/virtualkeyboard/platforminputcontext.cpp | 26 | ||||
-rw-r--r-- | src/virtualkeyboard/platforminputcontext.h | 5 | ||||
-rw-r--r-- | src/virtualkeyboard/virtualkeyboard.pro | 5 |
4 files changed, 17 insertions, 22 deletions
diff --git a/src/virtualkeyboard/declarativeinputcontext.cpp b/src/virtualkeyboard/declarativeinputcontext.cpp index 23d2fafe..7fca8e04 100644 --- a/src/virtualkeyboard/declarativeinputcontext.cpp +++ b/src/virtualkeyboard/declarativeinputcontext.cpp @@ -136,9 +136,6 @@ DeclarativeInputContext::DeclarativeInputContext(PlatformInputContext *parent) : */ DeclarativeInputContext::~DeclarativeInputContext() { - Q_D(DeclarativeInputContext); - if (d->inputContext) - d->inputContext->setDeclarativeContext(0); } bool DeclarativeInputContext::focus() const diff --git a/src/virtualkeyboard/platforminputcontext.cpp b/src/virtualkeyboard/platforminputcontext.cpp index dd40bc74..3808fbe4 100644 --- a/src/virtualkeyboard/platforminputcontext.cpp +++ b/src/virtualkeyboard/platforminputcontext.cpp @@ -21,9 +21,8 @@ #include "abstractinputpanel.h" #ifdef QT_VIRTUALKEYBOARD_DESKTOP #include "desktopinputpanel.h" -#else -#include "appinputpanel.h" #endif +#include "appinputpanel.h" #include "virtualkeyboarddebug.h" #include <QWindow> @@ -31,12 +30,7 @@ PlatformInputContext::PlatformInputContext() : m_declarativeContext(0), -#ifdef QT_VIRTUALKEYBOARD_DESKTOP - m_inputPanel(new DesktopInputPanel(this)), -#else - m_inputPanel(new AppInputPanel(this)), -#endif - m_inputPanelCreated(false), + m_inputPanel(0), m_focusObject(0), m_locale(), m_inputDirection(m_locale.textDirection()) @@ -73,10 +67,12 @@ void PlatformInputContext::update(Qt::InputMethodQueries queries) { VIRTUALKEYBOARD_DEBUG() << "PlatformInputContext::update():" << queries; bool enabled = inputMethodQuery(Qt::ImEnabled).toBool(); - if (enabled && !m_inputPanelCreated) { +#ifdef QT_VIRTUALKEYBOARD_DESKTOP + if (enabled && !m_inputPanel) { + m_inputPanel = new DesktopInputPanel(this); m_inputPanel->createView(); - m_inputPanelCreated = true; } +#endif if (m_declarativeContext) { m_declarativeContext->setFocus(enabled); @@ -116,7 +112,7 @@ bool PlatformInputContext::isAnimating() const void PlatformInputContext::showInputPanel() { - if (!m_inputPanelCreated || m_inputPanel->isVisible()) + if (!m_inputPanel || m_inputPanel->isVisible()) return; m_inputPanel->show(); emitInputPanelVisibleChanged(); @@ -124,7 +120,7 @@ void PlatformInputContext::showInputPanel() void PlatformInputContext::hideInputPanel() { - if (!m_inputPanel->isVisible()) + if (!m_inputPanel || !m_inputPanel->isVisible()) return; m_inputPanel->hide(); emitInputPanelVisibleChanged(); @@ -132,7 +128,7 @@ void PlatformInputContext::hideInputPanel() bool PlatformInputContext::isInputPanelVisible() const { - return m_inputPanel->isVisible(); + return m_inputPanel ? m_inputPanel->isVisible() : false; } QLocale PlatformInputContext::locale() const @@ -242,7 +238,11 @@ void PlatformInputContext::setDeclarativeContext(DeclarativeInputContext *contex } m_declarativeContext = context; if (m_declarativeContext) { + if (!m_inputPanel) + m_inputPanel = new AppInputPanel(this); connect(m_declarativeContext, SIGNAL(keyboardRectangleChanged()), SLOT(keyboardRectangleChanged())); + } else if (m_inputPanel) { + m_inputPanel = 0; } } diff --git a/src/virtualkeyboard/platforminputcontext.h b/src/virtualkeyboard/platforminputcontext.h index 2511a67a..b123a7dd 100644 --- a/src/virtualkeyboard/platforminputcontext.h +++ b/src/virtualkeyboard/platforminputcontext.h @@ -76,9 +76,8 @@ private slots: private: friend class DeclarativeInputContext; - DeclarativeInputContext *m_declarativeContext; - AbstractInputPanel *m_inputPanel; - bool m_inputPanelCreated; + QPointer<DeclarativeInputContext> m_declarativeContext; + QPointer<AbstractInputPanel> m_inputPanel; QPointer<QObject> m_focusObject; QLocale m_locale; Qt::LayoutDirection m_inputDirection; diff --git a/src/virtualkeyboard/virtualkeyboard.pro b/src/virtualkeyboard/virtualkeyboard.pro index 778ce784..eab843d7 100644 --- a/src/virtualkeyboard/virtualkeyboard.pro +++ b/src/virtualkeyboard/virtualkeyboard.pro @@ -78,10 +78,9 @@ disable-xcb { PKGCONFIG += xcb xcb-xfixes DEFINES += QT_VIRTUALKEYBOARD_HAVE_XCB } -} else { - SOURCES += appinputpanel.cpp - HEADERS += appinputpanel.h } +SOURCES += appinputpanel.cpp +HEADERS += appinputpanel.h qtquickcompiler { TARGETPATH = QtQuick/Enterprise/VirtualKeyboard |