--- a/src/hbcore/inputfw/hbinputmethod.cpp Thu Sep 02 20:44:51 2010 +0300
+++ b/src/hbcore/inputfw/hbinputmethod.cpp Fri Sep 17 08:32:10 2010 +0300
@@ -189,7 +189,7 @@
connect(&app, SIGNAL(aboutToQuit()), HbPredictionFactory::instance(), SLOT(shutDown()));
connect(&app, SIGNAL(aboutToQuit()), HbExtraDictionaryFactory::instance(), SLOT(shutdown()));
- HbInputMethod *master = HbInputMethodNull::Instance();
+ HbInputMethodNull *master = HbInputMethodNull::Instance();
if (!master) {
return false;
@@ -205,6 +205,16 @@
app.setInputContext(proxy);
}
+ if (master->delayedPanelRequest()) {
+ master->setDelayedPanelRequest(false);
+ QInputContext* ic = qApp->inputContext();
+ if (ic) {
+ QEvent *openEvent = new QEvent(QEvent::RequestSoftwareInputPanel);
+ ic->filterEvent(openEvent);
+ delete openEvent;
+ }
+ }
+
return true;
}
@@ -450,7 +460,7 @@
// Delete previous focus object.
if (d->mFocusObject) {
refreshHost = true;
- disconnect(d->mFocusObject, SIGNAL(editorDeleted()), this, SLOT(editorDeleted()));
+ disconnect(d->mFocusObject->object(), SIGNAL(destroyed(QObject *)), this, SLOT(editorDeleted(QObject *)));
}
delete d->mFocusObject;
d->mFocusObject = 0;
@@ -481,11 +491,10 @@
{
Q_D(HbInputMethod);
- if (d->mFocusObject && d->mFocusObject->object() == widget) {
+ if (d->proxy()->focusWidget() == widget) {
delete d->mFocusObject;
d->mFocusObject = 0;
- // passing to actual QInputContext which is attached to Qt framework.
- // which will internally set QInputContext::focusWidget to Null.
+ // update QInputContext internal focusWidget pointer.
d->proxy()->QInputContext::widgetDestroyed(widget);
d->proxy()->QInputContext::setFocusWidget(0);
}
@@ -786,6 +795,19 @@
}
/*!
+Returns true if focus is locked. If focus is locked, input framework will ignore
+all the incoming focus events completely until focus is unlocked.
+
+\sa lockFocus
+\sa unlockFocus
+*/
+bool HbInputMethod::isFocusLocked()
+{
+ Q_D(HbInputMethod);
+ return d->mFocusLocked;
+}
+
+/*!
Removes input method focus and asks active input plugin to close its active UI-components
(such as touch keypads). This may be needed in some special cases where the underlying
application wants to make sure that there are no input related elements on the screen.