Work in progress: hacks at vienna, do not use it
[googlelatitude] / latitude.qml / main.cpp
index bce7fda..f430c4b 100644 (file)
@@ -1,6 +1,28 @@
 #include <QtGui/QApplication>
+#include <QtGui/QInputContext>
 #include "qml.h"
 
+class EventFilter : public QObject {
+protected:
+    bool eventFilter(QObject *obj, QEvent *event) {
+        QInputContext *ic = qApp->inputContext();
+        if (ic) {
+            if (ic->focusWidget() == 0 && prevFocusWidget) {
+                QEvent closeSIPEvent(QEvent::CloseSoftwareInputPanel);
+                ic->filterEvent(&closeSIPEvent);
+            } else if (prevFocusWidget == 0 && ic->focusWidget()) {
+                QEvent openSIPEvent(QEvent::RequestSoftwareInputPanel);
+                ic->filterEvent(&openSIPEvent);
+            }
+            prevFocusWidget = ic->focusWidget();
+        }
+        return QObject::eventFilter(obj,event);
+    }
+
+private:
+    QWidget *prevFocusWidget;
+};
+
 int main(int argc, char *argv[]) {
     qDebug() << "* Main QML";
     QCoreApplication::setOrganizationName("linfati.com");
@@ -10,6 +32,8 @@ int main(int argc, char *argv[]) {
     QApplication lu(argc, argv);
 
     LatitudeQML mygui;
+    EventFilter ef;
+    mygui.installEventFilter(&ef);
     mygui.showFullScreen();
 
     return lu.exec();