diff -r 11d3954df52a -r 627c4a0fd0e7 src/hbcore/inputfw/hbinputcontextproxy.cpp --- a/src/hbcore/inputfw/hbinputcontextproxy.cpp Thu May 27 13:10:59 2010 +0300 +++ b/src/hbcore/inputfw/hbinputcontextproxy.cpp Fri Jun 11 13:58:22 2010 +0300 @@ -114,14 +114,17 @@ setInputFrameworkFocus(0); return true; } else if (event->type() == QEvent::RequestSoftwareInputPanel) { - if(QWidget * focusedWidget = qApp->focusWidget()) { + if(QWidget * focusedWidget = qApp->focusWidget()) { // see if the focused widget is graphics view, if so get the focused graphics item in the view // and acivate inputmethod for the focused graphics item - if(QGraphicsView * graphicsView = qobject_cast(focusedWidget)) { - if(QGraphicsScene * scene = graphicsView->scene()) { - if(QGraphicsItem * focusingWidget = scene->focusItem()) { - if (focusingWidget->isWidget()) { - setInputFrameworkFocus(static_cast(focusingWidget)); + if (QGraphicsView * graphicsView = qobject_cast(focusedWidget)) { + if (QGraphicsScene * scene = graphicsView->scene()) { + if (QGraphicsItem * fItem = scene->focusItem()) { + QGraphicsProxyWidget *proxy = qgraphicsitem_cast(fItem); + if (proxy) { + setInputFrameworkFocus(proxy->widget()->focusWidget()); + } else { + setInputFrameworkFocus(static_cast(fItem)); } } }