Hello community,

here is the log from the commit of package fcitx-qt5 for openSUSE:Factory 
checked in at 2015-12-24 12:17:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fcitx-qt5 (Old)
 and      /work/SRC/openSUSE:Factory/.fcitx-qt5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fcitx-qt5"

Changes:
--------
--- /work/SRC/openSUSE:Factory/fcitx-qt5/fcitx-qt5.changes      2015-09-02 
00:36:46.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.fcitx-qt5.new/fcitx-qt5.changes 2015-12-24 
12:17:27.000000000 +0100
@@ -1,0 +2,11 @@
+Wed Dec 23 06:49:41 UTC 2015 - [email protected]
+
+- update version 1.0.5
+  * implement locale in platform context
+  * use link_directories for widgetaddons
+  * use the correct var name
+  * use some c++11 featues and fix ic not get recreated when
+    fcitx restarts
+  * clean proxy even it's invalid
+
+-------------------------------------------------------------------

Old:
----
  fcitx-qt5-1.0.4.tar.xz

New:
----
  fcitx-qt5-1.0.5.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fcitx-qt5.spec ++++++
--- /var/tmp/diff_new_pack.EJUZPY/_old  2015-12-24 12:17:28.000000000 +0100
+++ /var/tmp/diff_new_pack.EJUZPY/_new  2015-12-24 12:17:28.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           fcitx-qt5
-Version:        1.0.4
+Version:        1.0.5
 Release:        0
 Summary:        Fcitx QT5 Input Context
 License:        GPL-2.0+
@@ -27,7 +27,7 @@
 Source99:       baselibs.conf
 BuildRequires:  cmake
 BuildRequires:  extra-cmake-modules
-BuildRequires:  fcitx-devel >= 4.2.8.6
+BuildRequires:  fcitx-devel >= 4.2.9.1
 BuildRequires:  gcc-c++
 BuildRequires:  libicu-devel
 BuildRequires:  libqt5-qtbase-devel

++++++ fcitx-qt5-1.0.4.tar.xz -> fcitx-qt5-1.0.5.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcitx-qt5-1.0.4/CMakeLists.txt 
new/fcitx-qt5-1.0.5/CMakeLists.txt
--- old/fcitx-qt5-1.0.4/CMakeLists.txt  2015-07-09 06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/CMakeLists.txt  2015-12-18 01:02:37.000000000 +0100
@@ -16,6 +16,16 @@
 include(ECMSetupVersion)
 include(ECMGenerateHeaders)
 
+include(CheckCXXCompilerFlag)
+
+check_cxx_compiler_flag("-std=c++11" SUPPORT_CXX11)
+
+if(NOT SUPPORT_CXX11)
+    message(FATAL_ERROR "need c++ 11 compatible compiler to compile")
+endif()
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
+
 find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Core DBus Widgets)
 find_package(Qt5Gui ${REQUIRED_QT_VERSION} REQUIRED Private)
 find_package(XKBCommon 0.5.0 REQUIRED COMPONENTS XKBCommon)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtinputcontextproxy.cpp 
new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtinputcontextproxy.cpp
--- old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtinputcontextproxy.cpp 2015-07-09 
06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtinputcontextproxy.cpp 2015-12-18 
01:02:37.000000000 +0100
@@ -1,8 +1,8 @@
 /*
  * This file was generated by qdbusxml2cpp version 0.8
- * Command line was: qdbusxml2cpp -N -p fcitxqtinputcontextproxy -c 
FcitxQtInputContextProxy interfaces/org.fcitx.Fcitx.InputContext.xml -i 
fcitxqtformattedpreedit.h -i fcitxqt_export.h
+ * Command line was: qdbusxml2cpp -N -p fcitxqtinputcontextproxy -c 
FcitxQtInputContextProxy interfaces/org.fcitx.Fcitx.InputContext.xml -i 
fcitxqtformattedpreedit.h -i fcitxqtdbusaddons_export.h
  *
- * qdbusxml2cpp is Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd.
  *
  * This is an auto-generated file.
  * This file may have been hand-edited. Look for HAND-EDIT comments
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtinputcontextproxy.h 
new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtinputcontextproxy.h
--- old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtinputcontextproxy.h   2015-07-09 
06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtinputcontextproxy.h   2015-12-18 
01:02:37.000000000 +0100
@@ -1,15 +1,15 @@
 /*
  * This file was generated by qdbusxml2cpp version 0.8
- * Command line was: qdbusxml2cpp -N -p fcitxqtinputcontextproxy -c 
FcitxQtInputContextProxy interfaces/org.fcitx.Fcitx.InputContext.xml -i 
fcitxqtformattedpreedit.h -i fcitxqt_export.h
+ * Command line was: qdbusxml2cpp -N -p fcitxqtinputcontextproxy -c 
FcitxQtInputContextProxy interfaces/org.fcitx.Fcitx.InputContext.xml -i 
fcitxqtformattedpreedit.h -i fcitxqtdbusaddons_export.h
  *
- * qdbusxml2cpp is Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd.
  *
  * This is an auto-generated file.
  * Do not edit! All changes made to it will be lost.
  */
 
-#ifndef FCITXQTINPUTCONTEXTPROXY_H_1409252990
-#define FCITXQTINPUTCONTEXTPROXY_H_1409252990
+#ifndef FCITXQTINPUTCONTEXTPROXY_H
+#define FCITXQTINPUTCONTEXTPROXY_H
 
 #include <QtCore/QObject>
 #include <QtCore/QByteArray>
@@ -41,91 +41,92 @@
     inline QDBusPendingReply<> CloseIC()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("CloseIC"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("CloseIC"), 
argumentList);
     }
 
     inline QDBusPendingReply<> DestroyIC()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("DestroyIC"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("DestroyIC"), 
argumentList);
     }
 
     inline QDBusPendingReply<> EnableIC()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("EnableIC"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("EnableIC"), 
argumentList);
     }
 
     inline QDBusPendingReply<> FocusIn()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("FocusIn"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("FocusIn"), 
argumentList);
     }
 
     inline QDBusPendingReply<> FocusOut()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("FocusOut"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("FocusOut"), 
argumentList);
     }
 
     inline QDBusPendingReply<> MouseEvent(int x)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(x);
-        return asyncCallWithArgumentList(QLatin1String("MouseEvent"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("MouseEvent"), 
argumentList);
     }
 
     inline QDBusPendingReply<int> ProcessKeyEvent(uint keyval, uint keycode, 
uint state, int type, uint time)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(keyval) << 
QVariant::fromValue(keycode) << QVariant::fromValue(state) << 
QVariant::fromValue(type) << QVariant::fromValue(time);
-        return asyncCallWithArgumentList(QLatin1String("ProcessKeyEvent"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("ProcessKeyEvent"), 
argumentList);
     }
 
     inline QDBusPendingReply<> Reset()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("Reset"), argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("Reset"), 
argumentList);
     }
 
     inline QDBusPendingReply<> SetCapacity(uint caps)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(caps);
-        return asyncCallWithArgumentList(QLatin1String("SetCapacity"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("SetCapacity"), 
argumentList);
     }
 
     inline QDBusPendingReply<> SetCursorLocation(int x, int y)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(x) << QVariant::fromValue(y);
-        return asyncCallWithArgumentList(QLatin1String("SetCursorLocation"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("SetCursorLocation"), 
argumentList);
     }
 
     inline QDBusPendingReply<> SetCursorRect(int x, int y, int w, int h)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(x) << QVariant::fromValue(y) << 
QVariant::fromValue(w) << QVariant::fromValue(h);
-        return asyncCallWithArgumentList(QLatin1String("SetCursorRect"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("SetCursorRect"), 
argumentList);
     }
 
     inline QDBusPendingReply<> SetSurroundingText(const QString &text, uint 
cursor, uint anchor)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(text) << 
QVariant::fromValue(cursor) << QVariant::fromValue(anchor);
-        return asyncCallWithArgumentList(QLatin1String("SetSurroundingText"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("SetSurroundingText"), 
argumentList);
     }
 
     inline QDBusPendingReply<> SetSurroundingTextPosition(uint cursor, uint 
anchor)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(cursor) << 
QVariant::fromValue(anchor);
-        return 
asyncCallWithArgumentList(QLatin1String("SetSurroundingTextPosition"), 
argumentList);
+        return 
asyncCallWithArgumentList(QStringLiteral("SetSurroundingTextPosition"), 
argumentList);
     }
 
 Q_SIGNALS: // SIGNALS
     void CloseIM();
     void CommitString(const QString &str);
+    void CurrentIM(const QString &name, const QString &uniqueName, const 
QString &langCode);
     void DeleteSurroundingText(int offset, uint nchar);
     void EnableIM();
     void ForwardKey(uint keyval, uint state, int type);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtinputmethodproxy.cpp 
new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtinputmethodproxy.cpp
--- old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtinputmethodproxy.cpp  2015-07-09 
06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtinputmethodproxy.cpp  2015-12-18 
01:02:37.000000000 +0100
@@ -1,8 +1,8 @@
 /*
  * This file was generated by qdbusxml2cpp version 0.8
- * Command line was: qdbusxml2cpp -N -p fcitxqtinputmethodproxy -c 
FcitxQtInputMethodProxy interfaces/org.fcitx.Fcitx.InputMethod.xml -i 
fcitxqtinputmethoditem.h -i fcitxqt_export.h
+ * Command line was: qdbusxml2cpp -N -p fcitxqtinputmethodproxy -c 
FcitxQtInputMethodProxy interfaces/org.fcitx.Fcitx.InputMethod.xml -i 
fcitxqtinputmethoditem.h -i fcitxqtdbusaddons_export.h
  *
- * qdbusxml2cpp is Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd.
  *
  * This is an auto-generated file.
  * This file may have been hand-edited. Look for HAND-EDIT comments
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtinputmethodproxy.h 
new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtinputmethodproxy.h
--- old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtinputmethodproxy.h    2015-07-09 
06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtinputmethodproxy.h    2015-12-18 
01:02:37.000000000 +0100
@@ -1,15 +1,15 @@
 /*
  * This file was generated by qdbusxml2cpp version 0.8
- * Command line was: qdbusxml2cpp -N -p fcitxqtinputmethodproxy -c 
FcitxQtInputMethodProxy interfaces/org.fcitx.Fcitx.InputMethod.xml -i 
fcitxqtinputmethoditem.h -i fcitxqt_export.h
+ * Command line was: qdbusxml2cpp -N -p fcitxqtinputmethodproxy -c 
FcitxQtInputMethodProxy interfaces/org.fcitx.Fcitx.InputMethod.xml -i 
fcitxqtinputmethoditem.h -i fcitxqtdbusaddons_export.h
  *
- * qdbusxml2cpp is Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd.
  *
  * This is an auto-generated file.
  * Do not edit! All changes made to it will be lost.
  */
 
-#ifndef FCITXQTINPUTMETHODPROXY_H_1409252990
-#define FCITXQTINPUTMETHODPROXY_H_1409252990
+#ifndef FCITXQTINPUTMETHODPROXY_H
+#define FCITXQTINPUTMETHODPROXY_H
 
 #include <QtCore/QObject>
 #include <QtCore/QByteArray>
@@ -53,38 +53,38 @@
     inline QDBusPendingReply<> ActivateIM()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("ActivateIM"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("ActivateIM"), 
argumentList);
     }
 
     inline QDBusPendingReply<> Configure()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("Configure"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("Configure"), 
argumentList);
     }
 
     inline QDBusPendingReply<> ConfigureAddon(const QString &addon)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(addon);
-        return asyncCallWithArgumentList(QLatin1String("ConfigureAddon"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("ConfigureAddon"), 
argumentList);
     }
 
     inline QDBusPendingReply<> ConfigureIM(const QString &im)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(im);
-        return asyncCallWithArgumentList(QLatin1String("ConfigureIM"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("ConfigureIM"), 
argumentList);
     }
 
     inline QDBusPendingReply<int, uint, uint, uint, uint> CreateIC()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("CreateIC"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("CreateIC"), 
argumentList);
     }
     inline QDBusReply<int> CreateIC(uint &keyval1, uint &state1, uint 
&keyval2, uint &state2)
     {
         QList<QVariant> argumentList;
-        QDBusMessage reply = callWithArgumentList(QDBus::Block, 
QLatin1String("CreateIC"), argumentList);
+        QDBusMessage reply = callWithArgumentList(QDBus::Block, 
QStringLiteral("CreateIC"), argumentList);
         if (reply.type() == QDBusMessage::ReplyMessage && 
reply.arguments().count() == 5) {
             keyval1 = qdbus_cast<uint>(reply.arguments().at(1));
             state1 = qdbus_cast<uint>(reply.arguments().at(2));
@@ -98,13 +98,13 @@
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(appname);
-        return asyncCallWithArgumentList(QLatin1String("CreateICv2"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("CreateICv2"), 
argumentList);
     }
     inline QDBusReply<int> CreateICv2(const QString &appname, bool &enable, 
uint &keyval1, uint &state1, uint &keyval2, uint &state2)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(appname);
-        QDBusMessage reply = callWithArgumentList(QDBus::Block, 
QLatin1String("CreateICv2"), argumentList);
+        QDBusMessage reply = callWithArgumentList(QDBus::Block, 
QStringLiteral("CreateICv2"), argumentList);
         if (reply.type() == QDBusMessage::ReplyMessage && 
reply.arguments().count() == 6) {
             enable = qdbus_cast<bool>(reply.arguments().at(1));
             keyval1 = qdbus_cast<uint>(reply.arguments().at(2));
@@ -119,13 +119,13 @@
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(appname) << 
QVariant::fromValue(pid);
-        return asyncCallWithArgumentList(QLatin1String("CreateICv3"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("CreateICv3"), 
argumentList);
     }
     inline QDBusReply<int> CreateICv3(const QString &appname, int pid, bool 
&enable, uint &keyval1, uint &state1, uint &keyval2, uint &state2)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(appname) << 
QVariant::fromValue(pid);
-        QDBusMessage reply = callWithArgumentList(QDBus::Block, 
QLatin1String("CreateICv3"), argumentList);
+        QDBusMessage reply = callWithArgumentList(QDBus::Block, 
QStringLiteral("CreateICv3"), argumentList);
         if (reply.type() == QDBusMessage::ReplyMessage && 
reply.arguments().count() == 6) {
             enable = qdbus_cast<bool>(reply.arguments().at(1));
             keyval1 = qdbus_cast<uint>(reply.arguments().at(2));
@@ -139,76 +139,76 @@
     inline QDBusPendingReply<> Exit()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("Exit"), argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("Exit"), argumentList);
     }
 
     inline QDBusPendingReply<QString> GetCurrentIM()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("GetCurrentIM"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("GetCurrentIM"), 
argumentList);
     }
 
     inline QDBusPendingReply<int> GetCurrentState()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("GetCurrentState"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("GetCurrentState"), 
argumentList);
     }
 
     inline QDBusPendingReply<QString> GetCurrentUI()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("GetCurrentUI"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("GetCurrentUI"), 
argumentList);
     }
 
     inline QDBusPendingReply<QString> GetIMAddon(const QString &im)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(im);
-        return asyncCallWithArgumentList(QLatin1String("GetIMAddon"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("GetIMAddon"), 
argumentList);
     }
 
     inline QDBusPendingReply<> InactivateIM()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("InactivateIM"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("InactivateIM"), 
argumentList);
     }
 
     inline QDBusPendingReply<> ReloadAddonConfig(const QString &addon)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(addon);
-        return asyncCallWithArgumentList(QLatin1String("ReloadAddonConfig"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("ReloadAddonConfig"), 
argumentList);
     }
 
     inline QDBusPendingReply<> ReloadConfig()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("ReloadConfig"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("ReloadConfig"), 
argumentList);
     }
 
     inline QDBusPendingReply<> ResetIMList()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("ResetIMList"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("ResetIMList"), 
argumentList);
     }
 
     inline QDBusPendingReply<> Restart()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("Restart"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("Restart"), 
argumentList);
     }
 
     inline QDBusPendingReply<> SetCurrentIM(const QString &im)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(im);
-        return asyncCallWithArgumentList(QLatin1String("SetCurrentIM"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("SetCurrentIM"), 
argumentList);
     }
 
     inline QDBusPendingReply<> ToggleIM()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("ToggleIM"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("ToggleIM"), 
argumentList);
     }
 
 Q_SIGNALS: // SIGNALS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtkeyboardproxy.cpp 
new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtkeyboardproxy.cpp
--- old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtkeyboardproxy.cpp     2015-07-09 
06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtkeyboardproxy.cpp     2015-12-18 
01:02:37.000000000 +0100
@@ -1,8 +1,8 @@
 /*
  * This file was generated by qdbusxml2cpp version 0.8
- * Command line was: qdbusxml2cpp -N -p fcitxqtkeyboardproxy -c 
FcitxQtKeyboardProxy interfaces/org.fcitx.Fcitx.Keyboard.xml -i 
fcitxqtkeyboardlayout.h -i fcitxqt_export.h
+ * Command line was: qdbusxml2cpp -N -p fcitxqtkeyboardproxy -c 
FcitxQtKeyboardProxy interfaces/org.fcitx.Fcitx.Keyboard.xml -i 
fcitxqtkeyboardlayout.h -i fcitxqtdbusaddons_export.h
  *
- * qdbusxml2cpp is Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd.
  *
  * This is an auto-generated file.
  * This file may have been hand-edited. Look for HAND-EDIT comments
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtkeyboardproxy.h 
new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtkeyboardproxy.h
--- old/fcitx-qt5-1.0.4/dbusaddons/fcitxqtkeyboardproxy.h       2015-07-09 
06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/dbusaddons/fcitxqtkeyboardproxy.h       2015-12-18 
01:02:37.000000000 +0100
@@ -1,15 +1,15 @@
 /*
  * This file was generated by qdbusxml2cpp version 0.8
- * Command line was: qdbusxml2cpp -N -p fcitxqtkeyboardproxy -c 
FcitxQtKeyboardProxy interfaces/org.fcitx.Fcitx.Keyboard.xml -i 
fcitxqtkeyboardlayout.h -i fcitxqt_export.h
+ * Command line was: qdbusxml2cpp -N -p fcitxqtkeyboardproxy -c 
FcitxQtKeyboardProxy interfaces/org.fcitx.Fcitx.Keyboard.xml -i 
fcitxqtkeyboardlayout.h -i fcitxqtdbusaddons_export.h
  *
- * qdbusxml2cpp is Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd.
  *
  * This is an auto-generated file.
  * Do not edit! All changes made to it will be lost.
  */
 
-#ifndef FCITXQTKEYBOARDPROXY_H_1409252990
-#define FCITXQTKEYBOARDPROXY_H_1409252990
+#ifndef FCITXQTKEYBOARDPROXY_H
+#define FCITXQTKEYBOARDPROXY_H
 
 #include <QtCore/QObject>
 #include <QtCore/QByteArray>
@@ -42,13 +42,13 @@
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(im);
-        return asyncCallWithArgumentList(QLatin1String("GetLayoutForIM"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("GetLayoutForIM"), 
argumentList);
     }
     inline QDBusReply<QString> GetLayoutForIM(const QString &im, QString 
&variant)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(im);
-        QDBusMessage reply = callWithArgumentList(QDBus::Block, 
QLatin1String("GetLayoutForIM"), argumentList);
+        QDBusMessage reply = callWithArgumentList(QDBus::Block, 
QStringLiteral("GetLayoutForIM"), argumentList);
         if (reply.type() == QDBusMessage::ReplyMessage && 
reply.arguments().count() == 2) {
             variant = qdbus_cast<QString>(reply.arguments().at(1));
         }
@@ -58,14 +58,14 @@
     inline QDBusPendingReply<FcitxQtKeyboardLayoutList> GetLayouts()
     {
         QList<QVariant> argumentList;
-        return asyncCallWithArgumentList(QLatin1String("GetLayouts"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("GetLayouts"), 
argumentList);
     }
 
     inline QDBusPendingReply<> SetLayoutForIM(const QString &im, const QString 
&layout, const QString &variant)
     {
         QList<QVariant> argumentList;
         argumentList << QVariant::fromValue(im) << QVariant::fromValue(layout) 
<< QVariant::fromValue(variant);
-        return asyncCallWithArgumentList(QLatin1String("SetLayoutForIM"), 
argumentList);
+        return asyncCallWithArgumentList(QStringLiteral("SetLayoutForIM"), 
argumentList);
     }
 
 Q_SIGNALS: // SIGNALS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcitx-qt5-1.0.4/dbusaddons/gen_dbus.sh 
new/fcitx-qt5-1.0.5/dbusaddons/gen_dbus.sh
--- old/fcitx-qt5-1.0.4/dbusaddons/gen_dbus.sh  2015-07-09 06:04:21.000000000 
+0200
+++ new/fcitx-qt5-1.0.5/dbusaddons/gen_dbus.sh  2015-12-18 01:02:37.000000000 
+0100
@@ -1,5 +1,5 @@
 #!/bin/sh
 
-qdbusxml2cpp-qt5 -N -p fcitxqtinputcontextproxy -c FcitxQtInputContextProxy 
interfaces/org.fcitx.Fcitx.InputContext.xml -i fcitxqtformattedpreedit.h -i 
fcitxqt_export.h
-qdbusxml2cpp-qt5 -N -p fcitxqtinputmethodproxy -c FcitxQtInputMethodProxy 
interfaces/org.fcitx.Fcitx.InputMethod.xml -i fcitxqtinputmethoditem.h -i 
fcitxqt_export.h
-qdbusxml2cpp-qt5 -N -p fcitxqtkeyboardproxy -c FcitxQtKeyboardProxy 
interfaces/org.fcitx.Fcitx.Keyboard.xml -i fcitxqtkeyboardlayout.h -i 
fcitxqt_export.h
+qdbusxml2cpp-qt5 -N -p fcitxqtinputcontextproxy -c FcitxQtInputContextProxy 
interfaces/org.fcitx.Fcitx.InputContext.xml -i fcitxqtformattedpreedit.h -i 
fcitxqtdbusaddons_export.h
+qdbusxml2cpp-qt5 -N -p fcitxqtinputmethodproxy -c FcitxQtInputMethodProxy 
interfaces/org.fcitx.Fcitx.InputMethod.xml -i fcitxqtinputmethoditem.h -i 
fcitxqtdbusaddons_export.h
+qdbusxml2cpp-qt5 -N -p fcitxqtkeyboardproxy -c FcitxQtKeyboardProxy 
interfaces/org.fcitx.Fcitx.Keyboard.xml -i fcitxqtkeyboardlayout.h -i 
fcitxqtdbusaddons_export.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fcitx-qt5-1.0.4/dbusaddons/interfaces/org.fcitx.Fcitx.InputContext.xml 
new/fcitx-qt5-1.0.5/dbusaddons/interfaces/org.fcitx.Fcitx.InputContext.xml
--- old/fcitx-qt5-1.0.4/dbusaddons/interfaces/org.fcitx.Fcitx.InputContext.xml  
2015-07-09 06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/dbusaddons/interfaces/org.fcitx.Fcitx.InputContext.xml  
2015-12-18 01:02:37.000000000 +0100
@@ -54,6 +54,11 @@
     <signal name="CommitString">
       <arg name="str" type="s"/>
     </signal>
+    <signal name="CurrentIM">
+      <arg name="name" type="s"/>
+      <arg name="uniqueName" type="s"/>
+      <arg name="langCode" type="s"/>
+    </signal>
     <signal name="UpdateFormattedPreedit">
       <arg name="str" type="a(si)" />
       <arg name="cursorpos" type="i"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fcitx-qt5-1.0.4/platforminputcontext/qfcitxplatforminputcontext.cpp 
new/fcitx-qt5-1.0.5/platforminputcontext/qfcitxplatforminputcontext.cpp
--- old/fcitx-qt5-1.0.4/platforminputcontext/qfcitxplatforminputcontext.cpp     
2015-07-09 06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/platforminputcontext/qfcitxplatforminputcontext.cpp     
2015-12-18 01:02:37.000000000 +0100
@@ -49,7 +49,7 @@
 {
     const char *value = getenv(name);
 
-    if (value == NULL)
+    if (value == nullptr)
         return defval;
 
     if (strcmp(value, "") == 0 ||
@@ -88,11 +88,10 @@
 
 QFcitxPlatformInputContext::QFcitxPlatformInputContext() :
     m_connection(new FcitxQtConnection(this)),
-    m_improxy(0),
-    m_n_compose(0),
+    m_improxy(nullptr),
     m_cursorPos(0),
     m_useSurroundingText(false),
-    m_syncMode(true),
+    m_syncMode(get_boolean_env("FCITX_QT_USE_SYNC", false)),
     m_lastWId(0),
     m_destroy(false),
     m_xkbContext(_xkb_context_new_helper()),
@@ -101,7 +100,6 @@
 {
     FcitxQtFormattedPreedit::registerMetaType();
 
-    memset(m_compose_buffer, 0, sizeof(uint) * (MAX_COMPOSE_LEN + 1));
     connect(m_connection, SIGNAL(connected()), this, SLOT(connected()));
     connect(m_connection, SIGNAL(disconnected()), this, SLOT(cleanUp()));
 
@@ -122,7 +120,7 @@
     // qDebug() << "create Input Context" << m_connection->name();
     if (m_improxy) {
         delete m_improxy;
-        m_improxy = 0;
+        m_improxy = nullptr;
     }
     m_improxy = new FcitxQtInputMethodProxy(m_connection->serviceName(), 
QLatin1String("/inputmethod"), *m_connection->connection(), this);
 
@@ -133,19 +131,11 @@
 
 void QFcitxPlatformInputContext::cleanUp()
 {
-    for(QHash<WId, FcitxQtICData *>::const_iterator i = m_icMap.constBegin(),
-                                             e = m_icMap.constEnd(); i != e; 
++i) {
-        FcitxQtICData* data = i.value();
-
-        if (data->proxy)
-            delete data->proxy;
-    }
-
     m_icMap.clear();
 
     if (m_improxy) {
         delete m_improxy;
-        m_improxy = 0;
+        m_improxy = nullptr;
     }
 
     if (!m_destroy) {
@@ -202,9 +192,8 @@
     if (!proxy)
         return;
 
-    FcitxQtICData* data = m_icMap.value(window->winId());
+    auto &data = m_icMap[window->winId()];
 
-    QInputMethod *method = qApp->inputMethod();
     QObject *input = qApp->focusObject();
     if (!input)
         return;
@@ -245,7 +234,7 @@
             break;
         if (!((queries & Qt::ImSurroundingText) && (queries & 
Qt::ImCursorPosition)))
             break;
-        if (data->capacity.testFlag(CAPACITY_PASSWORD))
+        if (data.capacity.testFlag(CAPACITY_PASSWORD))
             break;
         QVariant var = query.value(Qt::ImSurroundingText);
         QVariant var1 = query.value(Qt::ImCursorPosition);
@@ -265,24 +254,24 @@
                     anchor = var2.toInt();
                 else
                     anchor = cursor;
-                if (data->surroundingText != text) {
-                    data->surroundingText = text;
+                if (data.surroundingText != text) {
+                    data.surroundingText = text;
                     proxy->SetSurroundingText(text, cursor, anchor);
                 }
                 else {
-                    if (data->surroundingAnchor != anchor ||
-                        data->surroundingCursor != cursor)
+                    if (data.surroundingAnchor != anchor ||
+                        data.surroundingCursor != cursor)
                         proxy->SetSurroundingTextPosition(cursor, anchor);
                 }
-                data->surroundingCursor = cursor;
-                data->surroundingAnchor = anchor;
+                data.surroundingCursor = cursor;
+                data.surroundingAnchor = anchor;
                 setSurrounding = true;
             }
         }
         if (!setSurrounding) {
-            data->surroundingAnchor = -1;
-            data->surroundingCursor = -1;
-            data->surroundingText = QString::null;
+            data.surroundingAnchor = -1;
+            data.surroundingCursor = -1;
+            data.surroundingText = QString::null;
             removeCapacity(data, CAPACITY_SURROUNDING_TEXT);
         }
     } while(0);
@@ -311,25 +300,19 @@
     if (proxy)
         proxy->FocusIn();
     else {
-        FcitxQtICData* data = m_icMap.value(window->winId());
-        if (!data) {
-            createICData(window);
-            return;
-        }
+        createICData(window);
     }
 }
 
 void QFcitxPlatformInputContext::windowDestroyed(QObject* object)
 {
     /* access QWindow is not possible here, so we use our own map to do so */
-    WId wid = m_windowToWidMap.take(object);
-    if (!wid)
-        return;
-    FcitxQtICData* data = m_icMap.take(wid);
-    if (!data)
+    auto iter = m_windowToWidMap.find(object);
+    if (iter == m_windowToWidMap.end())
         return;
-
-    delete data;
+    auto wid = iter->second;
+    m_windowToWidMap.erase(iter);
+    m_icMap.erase(wid);
     // qDebug() << "Window Destroyed and we destroy IC correctly, horray!";
 }
 
@@ -342,7 +325,7 @@
     if (!proxy)
         return;
 
-    FcitxQtICData* data = m_icMap.value(inputWindow->winId());
+    auto& data = m_icMap[inputWindow->winId()];
 
     QRect r = qApp->inputMethod()->cursorRectangle().toRect();
     if(!r.isValid())
@@ -351,8 +334,8 @@
     r.moveTopLeft(inputWindow->mapToGlobal(r.topLeft()));
 
     qreal scale = inputWindow->devicePixelRatio();
-    if (data->rect != r) {
-        data->rect = r;
+    if (data.rect != r) {
+        data.rect = r;
         proxy->SetCursorRect(r.x() * scale, r.y() * scale,
                              r.width() * scale, r.height() * scale);
     }
@@ -365,11 +348,9 @@
 
     // qDebug() << "create Input Context" << 
m_connection->connection()->name();
 
-    if (m_improxy) {
-        delete m_improxy;
-        m_improxy = NULL;
+    if (!m_improxy) {
+        m_improxy = new FcitxQtInputMethodProxy(m_connection->serviceName(), 
QLatin1String("/inputmethod"), *m_connection->connection(), this);
     }
-    m_improxy = new FcitxQtInputMethodProxy(m_connection->serviceName(), 
QLatin1String("/inputmethod"), *m_connection->connection(), this);
 
     if (!m_improxy->isValid())
         return;
@@ -384,9 +365,12 @@
 void 
QFcitxPlatformInputContext::createInputContextFinished(QDBusPendingCallWatcher* 
watcher)
 {
     WId w = watcher->property("wid").toULongLong();
-    FcitxQtICData* data = m_icMap.value(w);
-    if (!data)
+    auto iter = m_icMap.find(w);
+    if (iter == m_icMap.end()) {
         return;
+    }
+
+    auto &data = iter->second;
 
     QDBusPendingReply< int, bool, uint, uint, uint, uint > result = *watcher;
 
@@ -400,45 +384,42 @@
 
         int id = qdbus_cast<int>(result.argumentAt(0));
         QString path = QString("/inputcontext_%1").arg(id);
-        if (data->proxy) {
-            delete data->proxy;
+        if (data.proxy) {
+            delete data.proxy;
         }
-        data->proxy = new 
FcitxQtInputContextProxy(m_connection->serviceName(), path, 
*m_connection->connection(), this);
-        connect(data->proxy, SIGNAL(CommitString(QString)), this, 
SLOT(commitString(QString)));
-        connect(data->proxy, SIGNAL(ForwardKey(uint, uint, int)), this, 
SLOT(forwardKey(uint, uint, int)));
-        connect(data->proxy, 
SIGNAL(UpdateFormattedPreedit(FcitxQtFormattedPreeditList,int)), this, 
SLOT(updateFormattedPreedit(FcitxQtFormattedPreeditList,int)));
-        connect(data->proxy, SIGNAL(DeleteSurroundingText(int,uint)), this, 
SLOT(deleteSurroundingText(int,uint)));
+        data.proxy = new FcitxQtInputContextProxy(m_connection->serviceName(), 
path, *m_connection->connection(), this);
+        connect(data.proxy, SIGNAL(CommitString(QString)), this, 
SLOT(commitString(QString)));
+        connect(data.proxy, SIGNAL(ForwardKey(uint, uint, int)), this, 
SLOT(forwardKey(uint, uint, int)));
+        connect(data.proxy, 
SIGNAL(UpdateFormattedPreedit(FcitxQtFormattedPreeditList,int)), this, 
SLOT(updateFormattedPreedit(FcitxQtFormattedPreeditList,int)));
+        connect(data.proxy, SIGNAL(DeleteSurroundingText(int,uint)), this, 
SLOT(deleteSurroundingText(int,uint)));
+        connect(data.proxy, SIGNAL(CurrentIM(QString,QString,QString)), this, 
SLOT(updateCurrentIM(QString,QString,QString)));
 
-        if (data->proxy->isValid()) {
+        if (data.proxy->isValid()) {
             QWindow* window = qApp->focusWindow();
             if (window && window->winId() == w)
-                data->proxy->FocusIn();
+                data.proxy->FocusIn();
         }
 
         QFlags<FcitxCapacityFlags> flag;
         flag |= CAPACITY_PREEDIT;
         flag |= CAPACITY_FORMATTED_PREEDIT;
         flag |= CAPACITY_CLIENT_UNFOCUS_COMMIT;
+        flag |= CAPACITY_GET_IM_INFO_ON_FOCUS;
         m_useSurroundingText = 
get_boolean_env("FCITX_QT_ENABLE_SURROUNDING_TEXT", true);
         if (m_useSurroundingText)
             flag |= CAPACITY_SURROUNDING_TEXT;
 
-        /*
-         * event loop will cause some problem, so we tries to use async way.
-         */
-        m_syncMode = get_boolean_env("FCITX_QT_USE_SYNC", false);
-
         addCapacity(data, flag, true);
     } while(0);
     delete watcher;
 }
 
-void QFcitxPlatformInputContext::updateCapacity(FcitxQtICData* data)
+void QFcitxPlatformInputContext::updateCapacity(const FcitxQtICData &data)
 {
-    if (!data->proxy || !data->proxy->isValid())
+    if (!data.proxy || !data.proxy->isValid())
         return;
 
-    QDBusPendingReply< void > result = data->proxy->SetCapacity((uint) 
data->capacity);
+    QDBusPendingReply< void > result = data.proxy->SetCapacity((uint) 
data.capacity);
 }
 
 void QFcitxPlatformInputContext::commitString(const QString& str)
@@ -513,7 +494,7 @@
 void QFcitxPlatformInputContext::forwardKey(uint keyval, uint state, int type)
 {
     QObject *input = qApp->focusObject();
-    if (input != NULL) {
+    if (input != nullptr) {
         key_filtered = true;
         QKeyEvent *keyevent = createKeyEvent(keyval, state, type);
         QCoreApplication::sendEvent(input, keyevent);
@@ -522,12 +503,27 @@
     }
 }
 
+void QFcitxPlatformInputContext::updateCurrentIM(const QString& name, const 
QString& uniqueName, const QString& langCode)
+{
+    Q_UNUSED(name);
+    Q_UNUSED(uniqueName);
+    QLocale newLocale(langCode);
+    if (m_locale != newLocale) {
+        m_locale = newLocale;
+        emitLocaleChanged();
+    }
+}
+
+QLocale QFcitxPlatformInputContext::locale() const
+{
+    return m_locale;
+}
+
 void QFcitxPlatformInputContext::createICData(QWindow* w)
 {
-    FcitxQtICData* data = m_icMap.value(w->winId());
-    if (!data) {
-        data = new FcitxQtICData;
-        m_icMap[w->winId()] = data;
+    auto iter = m_icMap.find(w->winId());
+    if (iter == m_icMap.end()) {
+        m_icMap.emplace(std::piecewise_construct, 
std::forward_as_tuple(w->winId()), std::forward_as_tuple());
         m_windowToWidMap[w] = w->winId();
         connect(w, SIGNAL(destroyed(QObject*)), this, 
SLOT(windowDestroyed(QObject*)));
     }
@@ -698,7 +694,7 @@
 
 FcitxQtInputContextProxy* QFcitxPlatformInputContext::validIC()
 {
-    if (m_icMap.isEmpty()) {
+    if (m_icMap.empty()) {
         return 0;
     }
     QWindow* window = qApp->focusWindow();
@@ -707,18 +703,19 @@
 
 FcitxQtInputContextProxy* QFcitxPlatformInputContext::validICByWId(WId wid)
 {
-    if (m_icMap.isEmpty()) {
-        return 0;
+    if (m_icMap.empty()) {
+        return nullptr;
     }
-    FcitxQtICData* icData = m_icMap.value(wid);
-    if (!icData)
-        return 0;
-    if (icData->proxy.isNull()) {
-        return 0;
-    } else if (icData->proxy->isValid()) {
-        return icData->proxy.data();
+    auto iter = m_icMap.find(wid);
+    if (iter == m_icMap.end())
+        return nullptr;
+    auto &data = iter->second;
+    if (data.proxy.isNull()) {
+        return nullptr;
+    } else if (data.proxy->isValid()) {
+        return data.proxy.data();
     }
-    return 0;
+    return nullptr;
 }
 
 FcitxQtInputContextProxy* QFcitxPlatformInputContext::validICByWindow(QWindow* 
w)
@@ -727,7 +724,7 @@
         return 0;
     }
 
-    if (m_icMap.isEmpty()) {
+    if (m_icMap.empty()) {
         return 0;
     }
     return validICByWId(w->winId());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/fcitx-qt5-1.0.4/platforminputcontext/qfcitxplatforminputcontext.h 
new/fcitx-qt5-1.0.5/platforminputcontext/qfcitxplatforminputcontext.h
--- old/fcitx-qt5-1.0.4/platforminputcontext/qfcitxplatforminputcontext.h       
2015-07-09 06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/platforminputcontext/qfcitxplatforminputcontext.h       
2015-12-18 01:02:37.000000000 +0100
@@ -28,12 +28,11 @@
 #include <QPointer>
 #include <QFileSystemWatcher>
 #include <QRect>
+#include <unordered_map>
 #include <xkbcommon/xkbcommon-compose.h>
 #include "fcitxqtformattedpreedit.h"
 #include "fcitxqtinputcontextproxy.h"
 
-#define MAX_COMPOSE_LEN 7
-
 class FcitxQtConnection;
 class QFileSystemWatcher;
 enum FcitxKeyEventType {
@@ -65,7 +64,8 @@
     CAPACITY_UPPERCASE_WORDS = (1 << 19),
     CAPACITY_UPPERCASE_SENTENCES = (1 << 20),
     CAPACITY_ALPHA = (1 << 21),
-    CAPACITY_NAME = (1 << 22)
+    CAPACITY_NAME = (1 << 22),
+    CAPACITY_GET_IM_INFO_ON_FOCUS = (1 << 23),
 } ;
 
 /** message type and flags */
@@ -110,9 +110,12 @@
 
 struct FcitxQtICData {
     FcitxQtICData() : capacity(0), proxy(0), surroundingAnchor(-1), 
surroundingCursor(-1) {}
+    FcitxQtICData(const FcitxQtICData& that) = delete;
     ~FcitxQtICData() {
-        if (proxy && proxy->isValid()) {
-            proxy->DestroyIC();
+        if (proxy) {
+            if (proxy->isValid()) {
+                proxy->DestroyIC();
+            }
             delete proxy;
         }
     }
@@ -187,14 +190,14 @@
     QFcitxPlatformInputContext();
     virtual ~QFcitxPlatformInputContext();
 
-    virtual bool filterEvent(const QEvent* event);
-    virtual bool isValid() const;
-    virtual void invokeAction(QInputMethod::Action , int cursorPosition);
-    virtual void reset();
-    virtual void commit();
-    virtual void update(Qt::InputMethodQueries quries );
-    virtual void setFocusObject(QObject* object);
-
+    virtual bool filterEvent(const QEvent* event) Q_DECL_OVERRIDE;
+    virtual bool isValid() const Q_DECL_OVERRIDE;
+    virtual void invokeAction(QInputMethod::Action , int cursorPosition) 
Q_DECL_OVERRIDE;
+    virtual void reset() Q_DECL_OVERRIDE;
+    virtual void commit() Q_DECL_OVERRIDE;
+    virtual void update(Qt::InputMethodQueries quries ) Q_DECL_OVERRIDE;
+    virtual void setFocusObject(QObject* object) Q_DECL_OVERRIDE;
+    virtual QLocale locale() const Q_DECL_OVERRIDE;
 
 public Q_SLOTS:
     void cursorRectChanged();
@@ -206,35 +209,33 @@
     void connected();
     void cleanUp();
     void windowDestroyed(QObject* object);
+    void updateCurrentIM(const QString &name, const QString &uniqueName, const 
QString &langCode);
 
 
 private:
     void createInputContext(WId w);
     bool processCompose(uint keyval, uint state, FcitxKeyEventType event);
-    bool checkAlgorithmically();
-    bool checkCompactTable(const struct _FcitxComposeTableCompact *table);
     QKeyEvent* createKeyEvent(uint keyval, uint state, int type);
 
-
-    void addCapacity(FcitxQtICData* data, QFlags<FcitxCapacityFlags> capacity, 
bool forceUpdate = false)
+    void addCapacity(FcitxQtICData &data, QFlags<FcitxCapacityFlags> capacity, 
bool forceUpdate = false)
     {
-        QFlags< FcitxCapacityFlags > newcaps = data->capacity | capacity;
-        if (data->capacity != newcaps || forceUpdate) {
-            data->capacity = newcaps;
+        QFlags< FcitxCapacityFlags > newcaps = data.capacity | capacity;
+        if (data.capacity != newcaps || forceUpdate) {
+            data.capacity = newcaps;
             updateCapacity(data);
         }
     }
 
-    void removeCapacity(FcitxQtICData* data, QFlags<FcitxCapacityFlags> 
capacity, bool forceUpdate = false)
+    void removeCapacity(FcitxQtICData &data, QFlags<FcitxCapacityFlags> 
capacity, bool forceUpdate = false)
     {
-        QFlags< FcitxCapacityFlags > newcaps = data->capacity & (~capacity);
-        if (data->capacity != newcaps || forceUpdate) {
-            data->capacity = newcaps;
+        QFlags< FcitxCapacityFlags > newcaps = data.capacity & (~capacity);
+        if (data.capacity != newcaps || forceUpdate) {
+            data.capacity = newcaps;
             updateCapacity(data);
         }
     }
 
-    void updateCapacity(FcitxQtICData* data);
+    void updateCapacity(const FcitxQtICData &data);
     void commitPreedit();
     void createICData(QWindow* w);
     FcitxQtInputContextProxy* validIC();
@@ -242,26 +243,25 @@
     FcitxQtInputContextProxy* validICByWId(WId wid);
     bool filterEventFallback(uint keyval, uint keycode, uint state, bool 
press);
 
+    FcitxQtConnection* m_connection;
     FcitxQtInputMethodProxy* m_improxy;
-    uint m_compose_buffer[MAX_COMPOSE_LEN + 1];
-    int m_n_compose;
     QString m_preedit;
     QString m_commitPreedit;
     FcitxQtFormattedPreeditList m_preeditList;
     int m_cursorPos;
     bool m_useSurroundingText;
     bool m_syncMode;
-    FcitxQtConnection* m_connection;
     QString m_lastSurroundingText;
     int m_lastSurroundingAnchor;
     int m_lastSurroundingCursor;
-    QHash<WId, FcitxQtICData*> m_icMap;
-    QHash<QObject*, WId> m_windowToWidMap;
+    std::unordered_map<WId, FcitxQtICData> m_icMap;
+    std::unordered_map<QObject*, WId> m_windowToWidMap;
     WId m_lastWId;
     bool m_destroy;
     QScopedPointer<struct xkb_context, XkbContextDeleter> m_xkbContext;
     QScopedPointer<struct xkb_compose_table, XkbComposeTableDeleter>  
m_xkbComposeTable;
     QScopedPointer<struct xkb_compose_state, XkbComposeStateDeleter> 
m_xkbComposeState;
+    QLocale m_locale;
 private slots:
     void processKeyEventFinished(QDBusPendingCallWatcher*);
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcitx-qt5-1.0.4/widgetsaddons/CMakeLists.txt 
new/fcitx-qt5-1.0.5/widgetsaddons/CMakeLists.txt
--- old/fcitx-qt5-1.0.4/widgetsaddons/CMakeLists.txt    2015-07-09 
06:04:21.000000000 +0200
+++ new/fcitx-qt5-1.0.5/widgetsaddons/CMakeLists.txt    2015-12-18 
01:02:37.000000000 +0100
@@ -1,3 +1,8 @@
+link_directories(
+    ${FCITX_UTILS_LIBRARY_DIRS}
+    ${FCITX_CONFIG_LIBRARY_DIRS}
+)
+
 ecm_setup_version(${FcitxQt5_VERSION} VARIABLE_PREFIX FCITXQT5WIDGETSADDONS
                         VERSION_HEADER 
"${CMAKE_CURRENT_BINARY_DIR}/fcitxqtwidgetsaddons_version.h"
                         PACKAGE_VERSION_FILE 
"${CMAKE_CURRENT_BINARY_DIR}/FcitxQt5WidgetsAddonsConfigVersion.cmake"


Reply via email to