aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2015-01-05 16:06:44 +0200
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2015-01-16 09:08:01 +0200
commite883a6a310e804a8abfed10502bc4edffe547b6a (patch)
tree03e29f59bce2de1109fbaf1d193ff630dc8b0251
parenta90f6bb81d2a23dc0d56ab5feab05160b6923189 (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.cpp3
-rw-r--r--src/virtualkeyboard/platforminputcontext.cpp26
-rw-r--r--src/virtualkeyboard/platforminputcontext.h5
-rw-r--r--src/virtualkeyboard/virtualkeyboard.pro5
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