aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-08-30 10:13:45 +0200
committerLiang Qi <liang.qi@qt.io>2018-08-30 10:13:45 +0200
commit1372dd25d5fd5623046eb9e5ceebb2f4bd34f969 (patch)
tree1b8906861a50135e48b88e576c070599266a7d9f /src
parentcc857a9d8eaf328daf479ea3a87c0f78471e2e10 (diff)
parent30479f9771e60938dc0f6e325e3b16fb52663796 (diff)
Merge remote-tracking branch 'origin/5.11' into 5.12
Conflicts: src/virtualkeyboard/doc/qtvirtualkeyboard.qdocconf src/virtualkeyboard/platforminputcontext.cpp Change-Id: I3056b9cd19eb6c38fac1ad73eaac1945d816cc57
Diffstat (limited to 'src')
-rw-r--r--src/virtualkeyboard/content/HandwritingInputPanel.qml3
-rw-r--r--src/virtualkeyboard/content/InputPanel.qml5
-rw-r--r--src/virtualkeyboard/doc/qtvirtualkeyboard.qdocconf2
-rw-r--r--src/virtualkeyboard/doc/src/deployment-guide.qdoc56
-rw-r--r--src/virtualkeyboard/doc/src/qtvirtualkeyboard-index.qdoc1
-rw-r--r--src/virtualkeyboard/platforminputcontext.cpp19
6 files changed, 63 insertions, 23 deletions
diff --git a/src/virtualkeyboard/content/HandwritingInputPanel.qml b/src/virtualkeyboard/content/HandwritingInputPanel.qml
index 58800a6c..940fe915 100644
--- a/src/virtualkeyboard/content/HandwritingInputPanel.qml
+++ b/src/virtualkeyboard/content/HandwritingInputPanel.qml
@@ -91,6 +91,9 @@ Item {
enabled: inputPanel.keyboard.isHandwritingAvailable()
visible: enabled && available && active && Qt.inputMethod.visible
+ LayoutMirroring.enabled: false
+ LayoutMirroring.childrenInherit: true
+
Item {
id: keyboard
property var style: inputPanel && inputPanel.hasOwnProperty ? inputPanel.keyboard.style : null
diff --git a/src/virtualkeyboard/content/InputPanel.qml b/src/virtualkeyboard/content/InputPanel.qml
index ef900af4..9310238d 100644
--- a/src/virtualkeyboard/content/InputPanel.qml
+++ b/src/virtualkeyboard/content/InputPanel.qml
@@ -114,11 +114,14 @@ Item {
/*! \internal */
readonly property bool __isRootItem: inputPanel.parent != null && inputPanel.parent.parent == null
+ LayoutMirroring.enabled: false
+ LayoutMirroring.childrenInherit: true
+
SelectionControl {
objectName: "selectionControl"
x: -parent.x
y: -parent.y
- enabled: active && !keyboard.fullScreenMode
+ enabled: active && !keyboard.fullScreenMode && !__isRootItem
}
implicitHeight: keyboard.height
diff --git a/src/virtualkeyboard/doc/qtvirtualkeyboard.qdocconf b/src/virtualkeyboard/doc/qtvirtualkeyboard.qdocconf
index 60a364d8..b8bfd074 100644
--- a/src/virtualkeyboard/doc/qtvirtualkeyboard.qdocconf
+++ b/src/virtualkeyboard/doc/qtvirtualkeyboard.qdocconf
@@ -27,7 +27,7 @@ manifestmeta.highlighted.names = "QtVirtualKeyboard/Qt Quick Virtual Keyboard -
imagedirs += images
-depends += qtdoc qtcore qtgui qtqml qtquick qtquickcontrols2
+depends += qtdoc qtcore qtgui qtwidgets qtwayland qtqml qtquick qtquickcontrols2
qhp.projects = QtVirtualKeyboard
diff --git a/src/virtualkeyboard/doc/src/deployment-guide.qdoc b/src/virtualkeyboard/doc/src/deployment-guide.qdoc
index 9cbd6e6e..6e1a2642 100644
--- a/src/virtualkeyboard/doc/src/deployment-guide.qdoc
+++ b/src/virtualkeyboard/doc/src/deployment-guide.qdoc
@@ -71,19 +71,21 @@ Qt Virtual Keyboard currently supports two alternative integration methods
for using the plugin:
\list
- \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.
+ \li \c Desktop: requires no changes to existing applications.
+ The virtual keyboard 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.
+ \li \c Application: the virtual keyboard is embedded within the Qt
+ application itself by instantiating an \l InputPanel item in QML.
- In this integration method, the keyboard is shown in the same Qt Quick
- scene as the application.
+ This method is mandatory in environments where there is no support
+ for multiple top-level windows (such as embedded devices), but can
+ be used in desktop applications too.
+
+ This method can also be used by Qt Wayland compositors in order to
+ provide a server-side virtual keyboard. See the section below for details.
\endlist
The integration method is automatically selected by the project files.
@@ -91,8 +93,40 @@ However, in desktop environments, it is possible to override the desktop
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.
+\section2 Using Qt Virtual Keyboard with Qt Wayland
+
+This section explains how to use Qt Virtual Keyboard to interact with the
+\l {Line Edits Example}{Qt Widgets Line Edits example} using the
+\l {Qt Wayland Compositor Examples - Pure QML}{Pure QML example}
+as a compositor.
+
+We will be using Ubuntu 18.04 to run the example, using the X11 as the
+windowing system. The example compositor (\c pure-qml) will open
+as a window within an X11 session.
+
+\list 1
+ \li Start the compositor:
+ \badcode
+QT_XCB_GL_INTEGRATION=xcb_egl QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=xcomposite-egl QT_IM_MODULE=qtvirtualkeyboard ./pure-qml -platform xcb
+ \endcode
+ \li Before running the client application, ensure that QT_IM_MODULE is unset:
+ \badcode
+unset QT_IM_MODULE
+ \endcode
+ \li Start the Line Edits example as the client:
+ \badcode
+./lineedits -platform wayland
+ \endcode
+ \li Click on a line edit and Qt Virtual Keyboard's input panel will open.
+\endlist
+
+If issues are encountered, the following environment variables can be set
+when running the compositor to get debug output that can help diagnose the issue:
+
+\badcode
+WAYLAND_DEBUG=1
+QT_LOGGING_RULES="qt.virtualkeyboard=true;qt.qpa.wayland*=true"
+\endcode
\section1 Loading the Plugin
diff --git a/src/virtualkeyboard/doc/src/qtvirtualkeyboard-index.qdoc b/src/virtualkeyboard/doc/src/qtvirtualkeyboard-index.qdoc
index d68d8a9f..0043cd8c 100644
--- a/src/virtualkeyboard/doc/src/qtvirtualkeyboard-index.qdoc
+++ b/src/virtualkeyboard/doc/src/qtvirtualkeyboard-index.qdoc
@@ -56,6 +56,7 @@
\li \l {Handwriting Recognition}{Handwriting support}, with gestures for fullscreen input.
\li Audio feedback.
\li Cross-platform functionality.
+ \li Supports both \l {Integration Method}{Qt Quick and Qt Widgets applications}.
\endlist
\section1 Supported Languages
diff --git a/src/virtualkeyboard/platforminputcontext.cpp b/src/virtualkeyboard/platforminputcontext.cpp
index 14a14649..da0d23b2 100644
--- a/src/virtualkeyboard/platforminputcontext.cpp
+++ b/src/virtualkeyboard/platforminputcontext.cpp
@@ -88,18 +88,17 @@ void PlatformInputContext::commit()
void PlatformInputContext::update(Qt::InputMethodQueries queries)
{
VIRTUALKEYBOARD_DEBUG() << "PlatformInputContext::update():" << queries;
- bool enabled = inputMethodQuery(Qt::ImEnabled).toBool();
-#ifdef QT_VIRTUALKEYBOARD_DESKTOP
- if (enabled && !m_inputPanel) {
- m_inputPanel = new DesktopInputPanel(this);
- m_inputPanel->createView();
- m_selectionControl = new DesktopInputSelectionControl(this, m_inputContext);
- m_selectionControl->createHandles();
- }
-#endif
-
if (m_inputContext) {
+ bool enabled = inputMethodQuery(Qt::ImEnabled).toBool();
if (enabled) {
+#ifdef QT_VIRTUALKEYBOARD_DESKTOP
+ if (!m_inputPanel) {
+ m_inputPanel = new DesktopInputPanel(this);
+ m_inputPanel->createView();
+ m_selectionControl = new DesktopInputSelectionControl(this, m_inputContext);
+ m_selectionControl->createHandles();
+ }
+#endif
m_inputContext->priv()->update(queries);
if (m_visible)
updateInputPanelVisible();