summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp')
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
index ceb5ee1..a80c5d3 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
@@ -30,6 +30,7 @@
#include <QtGui/qapplication.h>
#include <QtGui/qgraphicssceneevent.h>
#include <QtGui/qstyleoption.h>
+#include <QtGui/qinputcontext.h>
#if defined(Q_WS_X11)
#include <QX11Info>
#endif
@@ -63,6 +64,8 @@ public:
void _q_doLoadFinished(bool success);
+ void _q_updateMicroFocus();
+
QGraphicsWebView* q;
QWebPage* page;
};
@@ -80,6 +83,20 @@ void QGraphicsWebViewPrivate::_q_doLoadFinished(bool success)
emit q->loadFinished(success);
}
+void QGraphicsWebViewPrivate::_q_updateMicroFocus()
+{
+#if !defined(QT_NO_IM) && (defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN))
+ // Ideally, this should be handled by a common call to an updateMicroFocus function
+ // in QGraphicsItem. See http://bugreports.qt.nokia.com/browse/QTBUG-7578.
+ QList<QGraphicsView*> views = q->scene()->views();
+ for (int c = 0; c < views.size(); ++c) {
+ QInputContext* ic = views.at(c)->inputContext();
+ if (ic)
+ ic->update();
+ }
+#endif
+}
+
void QGraphicsWebViewPrivate::scroll(int dx, int dy, const QRect& rectToScroll)
{
q->scroll(qreal(dx), qreal(dy), QRectF(rectToScroll));
@@ -435,6 +452,8 @@ void QGraphicsWebView::setPage(QWebPage* page)
this, SIGNAL(statusBarMessage(QString)));
connect(d->page, SIGNAL(linkClicked(QUrl)),
this, SIGNAL(linkClicked(QUrl)));
+ connect(d->page, SIGNAL(microFocusChanged()),
+ this, SLOT(_q_updateMicroFocus()));
}
/*!