aboutsummaryrefslogtreecommitdiffstats
path: root/src/virtualkeyboard
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-06-08 10:09:30 +0200
committerLiang Qi <liang.qi@qt.io>2017-06-08 10:09:30 +0200
commit7036de7bb303735e7ef0fdf7f2d220bdbc867c71 (patch)
tree78c810ee55f7f08d263503f5c0dd6085868c5556 /src/virtualkeyboard
parent7c770c6e510d6c2274fd10a10e6f812672e3a6d1 (diff)
parent2102196073a045d354e1ff5ea0e00ee4923b948d (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: .qmake.conf src/virtualkeyboard/virtualkeyboard.pro Change-Id: Idf7682b63379b94a1d444d3528472afea77133bc
Diffstat (limited to 'src/virtualkeyboard')
-rw-r--r--src/virtualkeyboard/3rdparty/pinyin/pinyin.pro2
-rw-r--r--src/virtualkeyboard/content/components/ChangeLanguageKey.qml2
-rw-r--r--src/virtualkeyboard/desktopinputpanel.cpp3
-rw-r--r--src/virtualkeyboard/desktopinputselectioncontrol.cpp5
-rw-r--r--src/virtualkeyboard/desktopinputselectioncontrol.h2
-rw-r--r--src/virtualkeyboard/doc/src/deployment-guide.qdoc11
-rw-r--r--src/virtualkeyboard/enterkeyaction.h3
-rw-r--r--src/virtualkeyboard/hunspellworker.cpp5
-rw-r--r--src/virtualkeyboard/hunspellworker.h2
-rw-r--r--src/virtualkeyboard/inputcontext.cpp11
-rw-r--r--src/virtualkeyboard/inputengine.h7
-rw-r--r--src/virtualkeyboard/inputselectionhandle.h4
-rw-r--r--src/virtualkeyboard/lipiworker.h2
-rw-r--r--src/virtualkeyboard/selectionlistmodel.cpp2
-rw-r--r--src/virtualkeyboard/selectionlistmodel.h5
-rw-r--r--src/virtualkeyboard/shifthandler.cpp9
-rw-r--r--src/virtualkeyboard/styles/KeyboardStyle.qml2
-rw-r--r--src/virtualkeyboard/styles/styles_plugin.h8
-rw-r--r--src/virtualkeyboard/t9writeworker.h2
-rw-r--r--src/virtualkeyboard/trace.cpp8
-rw-r--r--src/virtualkeyboard/virtualkeyboard.pro4
-rw-r--r--src/virtualkeyboard/virtualkeyboardsettings.cpp1
22 files changed, 70 insertions, 30 deletions
diff --git a/src/virtualkeyboard/3rdparty/pinyin/pinyin.pro b/src/virtualkeyboard/3rdparty/pinyin/pinyin.pro
index ffa17bfd..485ee5dc 100644
--- a/src/virtualkeyboard/3rdparty/pinyin/pinyin.pro
+++ b/src/virtualkeyboard/3rdparty/pinyin/pinyin.pro
@@ -54,4 +54,6 @@ load(qt_helper_lib)
win32 {
CONFIG += qt
QT = core
+} else {
+ LIBS += -pthread
}
diff --git a/src/virtualkeyboard/content/components/ChangeLanguageKey.qml b/src/virtualkeyboard/content/components/ChangeLanguageKey.qml
index ba4becde..b14e70f4 100644
--- a/src/virtualkeyboard/content/components/ChangeLanguageKey.qml
+++ b/src/virtualkeyboard/content/components/ChangeLanguageKey.qml
@@ -47,7 +47,7 @@ import QtQuick.VirtualKeyboard.Styles 2.1
\li Toggle mode
\endlist
- The popup mode is enabled by \l {KeyboardStyle.languagePopupListEnabled} property.
+ The popup mode is enabled by the \l {KeyboardStyle::languagePopupListEnabled} property.
If enabled, a key press will open a popup list with available languages. Otherwise
it will cycle to the next available input language.
*/
diff --git a/src/virtualkeyboard/desktopinputpanel.cpp b/src/virtualkeyboard/desktopinputpanel.cpp
index aad97e66..e9a8836a 100644
--- a/src/virtualkeyboard/desktopinputpanel.cpp
+++ b/src/virtualkeyboard/desktopinputpanel.cpp
@@ -152,7 +152,8 @@ void DesktopInputPanel::createView()
}
d->view->setColor(QColor(Qt::transparent));
d->view->setSource(QUrl("qrc:///QtQuick/VirtualKeyboard/content/InputPanel.qml"));
- connect(qGuiApp, SIGNAL(aboutToQuit()), SLOT(destroyView()));
+ if (QGuiApplication *app = qGuiApp)
+ connect(app, SIGNAL(aboutToQuit()), SLOT(destroyView()));
}
}
diff --git a/src/virtualkeyboard/desktopinputselectioncontrol.cpp b/src/virtualkeyboard/desktopinputselectioncontrol.cpp
index ec7f962e..7ecf0f6c 100644
--- a/src/virtualkeyboard/desktopinputselectioncontrol.cpp
+++ b/src/virtualkeyboard/desktopinputselectioncontrol.cpp
@@ -180,7 +180,10 @@ void DesktopInputSelectionControl::createHandles()
m_cursorSelectionHandle.reset(new InputSelectionHandle(this, focusWindow));
reloadGraphics();
- connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, this, &DesktopInputSelectionControl::destroyHandles);
+ if (QCoreApplication *app = QCoreApplication::instance()) {
+ connect(app, &QCoreApplication::aboutToQuit,
+ this, &DesktopInputSelectionControl::destroyHandles);
+ }
}
}
diff --git a/src/virtualkeyboard/desktopinputselectioncontrol.h b/src/virtualkeyboard/desktopinputselectioncontrol.h
index b138c937..9a5ec468 100644
--- a/src/virtualkeyboard/desktopinputselectioncontrol.h
+++ b/src/virtualkeyboard/desktopinputselectioncontrol.h
@@ -44,6 +44,8 @@ class InputSelectionHandle;
class DesktopInputSelectionControl : public QObject
{
+ Q_OBJECT
+
public:
DesktopInputSelectionControl(QObject *parent, InputContext *inputContext);
~DesktopInputSelectionControl() {}
diff --git a/src/virtualkeyboard/doc/src/deployment-guide.qdoc b/src/virtualkeyboard/doc/src/deployment-guide.qdoc
index 516c00a3..c3729d84 100644
--- a/src/virtualkeyboard/doc/src/deployment-guide.qdoc
+++ b/src/virtualkeyboard/doc/src/deployment-guide.qdoc
@@ -75,17 +75,22 @@ for using the plugin:
\li \c Desktop: Qt Virtual Keyboard is integrated with Qt 5 and requires no
changes to existing applications. The Qt Virtual Keyboard input method
is available to all of the Qt 5 applications in the system.
+
+ In this integration method, the keyboard is shown in a dedicated
+ top-level window.
\li \c Application: Qt Virtual Keyboard is integrated with Qt 5, but
requires changes to particular applications using Qt Virtual Keyboard.
This method is mandatory in a Boot2Qt environment, but can be used in
desktop applications too.
+
+ In this integration method, the keyboard is shown in the same Qt Quick
+ scene as the application.
\endlist
The integration method is automatically selected by the project files.
However, in desktop environments, it is possible to override the desktop
-integration method and use the application integration method instead.
-This happens by adding the \c CONFIG+=disable-desktop to the \c qmake
-command line.
+integration method and use the application integration method instead,
+by adding \c CONFIG+=disable-desktop to the \c qmake command line.
\note The desktop integration method is not currently available in Boot2Qt
environments.
diff --git a/src/virtualkeyboard/enterkeyaction.h b/src/virtualkeyboard/enterkeyaction.h
index 5fa9d6d0..b78e09ec 100644
--- a/src/virtualkeyboard/enterkeyaction.h
+++ b/src/virtualkeyboard/enterkeyaction.h
@@ -39,7 +39,6 @@ class EnterKeyActionAttachedType;
class EnterKeyAction : public QObject
{
Q_OBJECT
- Q_ENUMS(Id)
public:
enum Id {
@@ -51,6 +50,8 @@ public:
Done
};
+ Q_ENUM(Id)
+
public:
static EnterKeyActionAttachedType *qmlAttachedProperties(QObject *object);
};
diff --git a/src/virtualkeyboard/hunspellworker.cpp b/src/virtualkeyboard/hunspellworker.cpp
index ff937578..ec418f50 100644
--- a/src/virtualkeyboard/hunspellworker.cpp
+++ b/src/virtualkeyboard/hunspellworker.cpp
@@ -32,6 +32,7 @@
#include <QVector>
#include <QTextCodec>
#include <QFileInfo>
+#include <QRegExp>
#include <QTime>
namespace QtVirtualKeyboard {
@@ -78,9 +79,9 @@ void HunspellLoadDictionaryTask::run()
QString affPath;
QString dicPath;
for (const QString &searchPath : searchPaths) {
- affPath = QStringLiteral("%1/%2.aff").arg(searchPath).arg(locale);
+ affPath = QStringLiteral("%1/%2.aff").arg(searchPath, locale);
if (QFileInfo::exists(affPath)) {
- dicPath = QStringLiteral("%1/%2.dic").arg(searchPath).arg(locale);
+ dicPath = QStringLiteral("%1/%2.dic").arg(searchPath, locale);
if (QFileInfo::exists(dicPath))
break;
dicPath.clear();
diff --git a/src/virtualkeyboard/hunspellworker.h b/src/virtualkeyboard/hunspellworker.h
index 71025b91..43fb07e4 100644
--- a/src/virtualkeyboard/hunspellworker.h
+++ b/src/virtualkeyboard/hunspellworker.h
@@ -147,7 +147,7 @@ private:
QSemaphore taskSema;
QMutex taskLock;
Hunhandle *hunspell;
- bool abort;
+ QAtomicInteger<bool> abort;
};
} // namespace QtVirtualKeyboard
diff --git a/src/virtualkeyboard/inputcontext.cpp b/src/virtualkeyboard/inputcontext.cpp
index 6bdd0420..b0a81f32 100644
--- a/src/virtualkeyboard/inputcontext.cpp
+++ b/src/virtualkeyboard/inputcontext.cpp
@@ -732,8 +732,15 @@ void InputContext::update(Qt::InputMethodQueries queries)
Qt::InputMethodHints inputMethodHints = Qt::InputMethodHints(imQueryEvent.value(Qt::ImHints).toInt());
const int cursorPosition = imQueryEvent.value(Qt::ImCursorPosition).toInt();
const int anchorPosition = imQueryEvent.value(Qt::ImAnchorPosition).toInt();
- QRectF anchorRectangle = qApp->inputMethod()->anchorRectangle();
- QRectF cursorRectangle = qApp->inputMethod()->cursorRectangle();
+ QRectF anchorRectangle;
+ QRectF cursorRectangle;
+ if (const QGuiApplication *app = qApp) {
+ anchorRectangle = app->inputMethod()->anchorRectangle();
+ cursorRectangle = app->inputMethod()->cursorRectangle();
+ } else {
+ anchorRectangle = d->anchorRectangle;
+ cursorRectangle = d->cursorRectangle;
+ }
QString surroundingText = imQueryEvent.value(Qt::ImSurroundingText).toString();
QString selectedText = imQueryEvent.value(Qt::ImCurrentSelection).toString();
diff --git a/src/virtualkeyboard/inputengine.h b/src/virtualkeyboard/inputengine.h
index c7ef5fd6..ce0122ac 100644
--- a/src/virtualkeyboard/inputengine.h
+++ b/src/virtualkeyboard/inputengine.h
@@ -46,9 +46,6 @@ class InputEngine : public QObject
Q_OBJECT
Q_DISABLE_COPY(InputEngine)
Q_DECLARE_PRIVATE(InputEngine)
- Q_ENUMS(TextCase)
- Q_ENUMS(InputMode)
- Q_ENUMS(PatternRecognitionMode)
Q_FLAGS(ReselectFlags)
Q_PROPERTY(Qt::Key activeKey READ activeKey NOTIFY activeKeyChanged)
Q_PROPERTY(Qt::Key previousKey READ previousKey NOTIFY previousKeyChanged)
@@ -87,6 +84,10 @@ public:
WordAfterCursor = 0x2,
WordAtCursor = WordBeforeCursor | WordAfterCursor
};
+
+ Q_ENUM(TextCase)
+ Q_ENUM(InputMode)
+ Q_ENUM(PatternRecognitionMode)
Q_DECLARE_FLAGS(ReselectFlags, ReselectFlag)
public:
diff --git a/src/virtualkeyboard/inputselectionhandle.h b/src/virtualkeyboard/inputselectionhandle.h
index fa2f1e13..e4c3e910 100644
--- a/src/virtualkeyboard/inputselectionhandle.h
+++ b/src/virtualkeyboard/inputselectionhandle.h
@@ -42,13 +42,15 @@ class DesktopInputSelectionControl;
class InputSelectionHandle : public QRasterWindow
{
+ Q_OBJECT
+
public:
InputSelectionHandle(DesktopInputSelectionControl *control, QWindow *eventWindow);
void applyImage(const QSize &windowSize);
protected:
void paintEvent(QPaintEvent *pe) Q_DECL_OVERRIDE;
- bool event(QEvent *event);
+ bool event(QEvent *event) Q_DECL_OVERRIDE;
private:
DesktopInputSelectionControl *m_control;
diff --git a/src/virtualkeyboard/lipiworker.h b/src/virtualkeyboard/lipiworker.h
index 3f84ec9f..676a2341 100644
--- a/src/virtualkeyboard/lipiworker.h
+++ b/src/virtualkeyboard/lipiworker.h
@@ -140,7 +140,7 @@ private:
QSemaphore taskSema;
QMutex taskLock;
LTKShapeRecognizer *shapeRecognizer;
- bool abort;
+ QAtomicInteger<bool> abort;
};
} // namespace QtVirtualKeyboard
diff --git a/src/virtualkeyboard/selectionlistmodel.cpp b/src/virtualkeyboard/selectionlistmodel.cpp
index 4aa09927..7606a1c6 100644
--- a/src/virtualkeyboard/selectionlistmodel.cpp
+++ b/src/virtualkeyboard/selectionlistmodel.cpp
@@ -246,7 +246,7 @@ void SelectionListModel::selectionListChanged(int type)
if (newCount) {
int changedCount = qMin(oldCount, newCount);
if (changedCount)
- dataChanged(index(0), index(changedCount - 1));
+ emit dataChanged(index(0), index(changedCount - 1));
if (oldCount > newCount) {
beginRemoveRows(QModelIndex(), newCount, oldCount - 1);
d->rowCount = newCount;
diff --git a/src/virtualkeyboard/selectionlistmodel.h b/src/virtualkeyboard/selectionlistmodel.h
index 47153558..f129637b 100644
--- a/src/virtualkeyboard/selectionlistmodel.h
+++ b/src/virtualkeyboard/selectionlistmodel.h
@@ -41,8 +41,6 @@ class SelectionListModelPrivate;
class SelectionListModel : public QAbstractListModel
{
Q_OBJECT
- Q_ENUMS(Type)
- Q_ENUMS(Role)
Q_DECLARE_PRIVATE(SelectionListModel)
Q_PROPERTY(int count READ count NOTIFY countChanged)
@@ -59,6 +57,9 @@ public:
WordCompletionLengthRole = Qt::UserRole + 1
};
+ Q_ENUM(Type)
+ Q_ENUM(Role)
+
~SelectionListModel();
void setDataSource(AbstractInputMethod *dataSource, Type type);
AbstractInputMethod *dataSource() const;
diff --git a/src/virtualkeyboard/shifthandler.cpp b/src/virtualkeyboard/shifthandler.cpp
index c40fd78e..376410e3 100644
--- a/src/virtualkeyboard/shifthandler.cpp
+++ b/src/virtualkeyboard/shifthandler.cpp
@@ -259,7 +259,8 @@ void ShiftHandler::autoCapitalize()
void ShiftHandler::restart()
{
Q_D(ShiftHandler);
- if (!qGuiApp->inputMethod()->isVisible()) {
+ const QGuiApplication *app = qGuiApp;
+ if (!app || !app->inputMethod()->isVisible()) {
d->resetWhenVisible = true;
return;
}
@@ -282,7 +283,11 @@ void ShiftHandler::localeChanged()
void ShiftHandler::inputMethodVisibleChanged()
{
Q_D(ShiftHandler);
- if (d->resetWhenVisible && qGuiApp->inputMethod()->isVisible()) {
+ if (!d->resetWhenVisible)
+ return;
+
+ const QGuiApplication *app = qGuiApp;
+ if (app && app->inputMethod()->isVisible()) {
d->resetWhenVisible = false;
reset();
}
diff --git a/src/virtualkeyboard/styles/KeyboardStyle.qml b/src/virtualkeyboard/styles/KeyboardStyle.qml
index f0095146..1d1c8222 100644
--- a/src/virtualkeyboard/styles/KeyboardStyle.qml
+++ b/src/virtualkeyboard/styles/KeyboardStyle.qml
@@ -521,7 +521,7 @@ QtObject {
This property holds the selected text color for the full screen input
field.
- The default color is set to \l full screenInputColor.
+ The default color is set to \c fullScreenInputColor.
*/
property color fullScreenInputSelectedTextColor: fullScreenInputColor
}
diff --git a/src/virtualkeyboard/styles/styles_plugin.h b/src/virtualkeyboard/styles/styles_plugin.h
index f401fdb9..9673a23a 100644
--- a/src/virtualkeyboard/styles/styles_plugin.h
+++ b/src/virtualkeyboard/styles/styles_plugin.h
@@ -32,12 +32,20 @@
#include <QQmlExtensionPlugin>
+static void initResources()
+{
+#ifdef QT_STATIC
+ Q_INIT_RESOURCE(qmake_QtQuick_VirtualKeyboard_Styles);
+#endif
+}
+
class QtVirtualKeyboardStylesPlugin : public QQmlExtensionPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
public:
+ QtVirtualKeyboardStylesPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); }
void registerTypes(const char *uri);
void initializeEngine(QQmlEngine *engine, const char *uri);
};
diff --git a/src/virtualkeyboard/t9writeworker.h b/src/virtualkeyboard/t9writeworker.h
index 9a6994ae..23a4cf02 100644
--- a/src/virtualkeyboard/t9writeworker.h
+++ b/src/virtualkeyboard/t9writeworker.h
@@ -175,7 +175,7 @@ private:
QSemaphore taskSema;
QMutex taskLock;
DECUMA_SESSION *decumaSession;
- bool abort;
+ QAtomicInteger<bool> abort;
};
} // namespace QtVirtualKeyboard
diff --git a/src/virtualkeyboard/trace.cpp b/src/virtualkeyboard/trace.cpp
index 683858af..e74793e1 100644
--- a/src/virtualkeyboard/trace.cpp
+++ b/src/virtualkeyboard/trace.cpp
@@ -104,10 +104,10 @@ public:
Trace objects are owned by their creator, which is the input method in
normal case. This means the objects are constructed in the
- \l {InputMethod.traceBegin()} (QML) method.
+ \l {InputMethod::traceBegin()}{InputMethod.traceBegin()} (QML) method.
By definition, the trace object can be destroyed at earliest in the
- \l {InputMethod.traceEnd()} (QML) method.
+ \l {InputMethod::traceEnd()}{InputMethod.traceEnd()} (QML) method.
*/
/*!
@@ -166,10 +166,10 @@ public:
Trace objects are owned by their creator, which is the input method in
normal case. This means the objects are constructed in the
- \l {InputMethod.traceBegin()} (QML) method.
+ \l {InputMethod::traceBegin()}{InputMethod.traceBegin()} (QML) method.
By definition, the trace object can be destroyed at earliest in the
- \l {InputMethod.traceEnd()} (QML) method.
+ \l {InputMethod::traceEnd()}{InputMethod.traceEnd()} (QML) method.
*/
/*! \internal */
diff --git a/src/virtualkeyboard/virtualkeyboard.pro b/src/virtualkeyboard/virtualkeyboard.pro
index 899476bf..25b1586f 100644
--- a/src/virtualkeyboard/virtualkeyboard.pro
+++ b/src/virtualkeyboard/virtualkeyboard.pro
@@ -216,7 +216,7 @@ OTHER_FILES += \
content/components/*.qml \
qtvirtualkeyboard.json
-!disable-desktop:isEmpty(CROSS_COMPILE):!qnx {
+!disable-desktop:isEmpty(CROSS_COMPILE):!android-embedded:!qnx {
SOURCES += desktopinputpanel.cpp inputview.cpp
HEADERS += desktopinputpanel.h inputview.h
DEFINES += QT_VIRTUALKEYBOARD_DESKTOP
@@ -330,7 +330,7 @@ lipi-toolkit {
-lltkcommon$$qtPlatformTargetSuffix() \
-lltkutil$$qtPlatformTargetSuffix()
win32: LIBS += Advapi32.lib
- else: LIBS += -ldl
+ else: QMAKE_USE += libdl
ltk_projects.files = $$PWD/3rdparty/lipi-toolkit/projects
ltk_projects.path = $$[QT_INSTALL_DATA]/qtvirtualkeyboard/lipi_toolkit
INSTALLS += ltk_projects
diff --git a/src/virtualkeyboard/virtualkeyboardsettings.cpp b/src/virtualkeyboard/virtualkeyboardsettings.cpp
index 12f85cc2..7280903c 100644
--- a/src/virtualkeyboard/virtualkeyboardsettings.cpp
+++ b/src/virtualkeyboard/virtualkeyboardsettings.cpp
@@ -33,6 +33,7 @@
#include <QQmlEngine>
#include <QFileInfo>
#include <QDir>
+#include <QRegExp>
#include <QtCore/private/qobject_p.h>
namespace QtVirtualKeyboard {