summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/blackberry/qbbintegration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/blackberry/qbbintegration.cpp')
-rw-r--r--src/plugins/platforms/blackberry/qbbintegration.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/plugins/platforms/blackberry/qbbintegration.cpp b/src/plugins/platforms/blackberry/qbbintegration.cpp
index a180ac9..f68f92e 100644
--- a/src/plugins/platforms/blackberry/qbbintegration.cpp
+++ b/src/plugins/platforms/blackberry/qbbintegration.cpp
@@ -71,7 +71,8 @@ QT_BEGIN_NAMESPACE
QBBIntegration::QBBIntegration() :
mFontDb(new QGenericUnixFontDatabase()),
- mPaintUsingOpenGL(getenv("QBB_USE_OPENGL") != NULL)
+ mPaintUsingOpenGL(getenv("QBB_USE_OPENGL") != NULL),
+ mVirtualKeyboard(0)
{
if (mPaintUsingOpenGL) {
// Set default window API to OpenGL
@@ -118,10 +119,18 @@ QBBIntegration::QBBIntegration() :
#endif
// create/start the keyboard class.
- QBBVirtualKeyboard::instance();
+ mVirtualKeyboard = new QBBVirtualKeyboard();
+
+ // delay invocation of start() to the time the event loop is up and running
+ // needed to have the QThread internals of the main thread properly initialized
+ QMetaObject::invokeMethod(mVirtualKeyboard, "start", Qt::QueuedConnection);
+
+ // TODO check if we need to do this for all screens or only the primary one
+ QObject::connect(mVirtualKeyboard, SIGNAL(heightChanged(int)),
+ QBBScreen::primaryDisplay(), SLOT(keyboardHeightChanged(int)));
// Set up the input context
- qApp->setInputContext(new QBBInputContext(qApp));
+ qApp->setInputContext(new QBBInputContext(*mVirtualKeyboard, qApp));
}
QBBIntegration::~QBBIntegration()
@@ -130,7 +139,7 @@ QBBIntegration::~QBBIntegration()
qDebug() << "QBB: platform plugin shutdown begin";
#endif
// destroy the keyboard class.
- QBBVirtualKeyboard::destroy();
+ delete mVirtualKeyboard;
#ifdef QBBLOCALETHREAD_ENABLED
// stop/destroy the locale thread.