Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qt6-virtualkeyboard for 
openSUSE:Factory checked in at 2026-10-18 19:21:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-virtualkeyboard (Old)
 and      /work/SRC/openSUSE:Factory/.qt6-virtualkeyboard.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qt6-virtualkeyboard"

Sun Oct 18 19:21:41 2026 rev:43 rq:1384419 version:6.12.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-virtualkeyboard/qt6-virtualkeyboard.changes  
2026-08-21 16:52:27.010112312 +0200
+++ 
/work/SRC/openSUSE:Factory/.qt6-virtualkeyboard.new.3698736/qt6-virtualkeyboard.changes
     2026-10-18 19:21:58.592408450 +0200
@@ -1,0 +2,6 @@
+Wed Sep 30 16:16:15 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.12.0
+  https://www.qt.io/blog/qt-6.12-released
+
+-------------------------------------------------------------------

Old:
----
  qtvirtualkeyboard-everywhere-src-6.11.2.tar.xz

New:
----
  qtvirtualkeyboard-everywhere-src-6.12.0.tar.xz

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

Other differences:
------------------
++++++ qt6-virtualkeyboard.spec ++++++
--- /var/tmp/diff_new_pack.hIRgOA/_old  2026-10-18 19:21:59.401441991 +0200
+++ /var/tmp/diff_new_pack.hIRgOA/_new  2026-10-18 19:21:59.403442074 +0200
@@ -16,8 +16,8 @@
 #
 
 
-%define real_version 6.11.2
-%define short_version 6.11
+%define real_version 6.12.0
+%define short_version 6.12
 %define tar_name qtvirtualkeyboard-everywhere-src
 %define tar_suffix %{nil}
 #
@@ -27,7 +27,7 @@
 %endif
 #
 Name:           qt6-virtualkeyboard%{?pkg_suffix}
-Version:        6.11.2
+Version:        6.12.0
 Release:        0
 Summary:        Framework for writing or integrating input methods and engines 
for Qt 6
 License:        GPL-3.0-only

++++++ qtvirtualkeyboard-everywhere-src-6.11.2.tar.xz -> 
qtvirtualkeyboard-everywhere-src-6.12.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtvirtualkeyboard-everywhere-src-6.11.2/.cmake.conf 
new/qtvirtualkeyboard-everywhere-src-6.12.0/.cmake.conf
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/.cmake.conf     2026-08-12 
18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/.cmake.conf     2026-09-26 
19:45:24.000000000 +0200
@@ -1,4 +1,4 @@
-set(QT_REPO_MODULE_VERSION "6.11.2")
+set(QT_REPO_MODULE_VERSION "6.12.0")
 set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
 set(QT_EXTRA_INTERNAL_TARGET_DEFINES
     "QT_NO_CONTEXTLESS_CONNECT=1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtvirtualkeyboard-everywhere-src-6.11.2/.tag 
new/qtvirtualkeyboard-everywhere-src-6.12.0/.tag
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/.tag    2026-08-12 
18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/.tag    2026-09-26 
19:45:24.000000000 +0200
@@ -1 +1 @@
-043d7629ccb62ce09b8c30cba7cc2a97248dfea9
+934b432b13cae5c64357a5e98547280bd191f806
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/CONTRIBUTING.md 
new/qtvirtualkeyboard-everywhere-src-6.12.0/CONTRIBUTING.md
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/CONTRIBUTING.md 1970-01-01 
01:00:00.000000000 +0100
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/CONTRIBUTING.md 2026-09-26 
19:45:24.000000000 +0200
@@ -0,0 +1,11 @@
+## Qt contribution guidelines
+
+We welcome contributions to Qt!
+
+Note that we cannot accept pull requests on GitHub. All contributions
+to the Qt project are exclusively handled through the
+[Gerrit code review system](https://codereview.qt-project.org).
+
+See
+[contribute.qt-project.org](https://contribute.qt-project.org/) to learn
+more.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtvirtualkeyboard-everywhere-src-6.11.2/REUSE.toml 
new/qtvirtualkeyboard-everywhere-src-6.12.0/REUSE.toml
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/REUSE.toml      2026-08-12 
18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/REUSE.toml      2026-09-26 
19:45:24.000000000 +0200
@@ -41,7 +41,8 @@
 SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR BSD-3-Clause"
 
 [[annotations]]
-path = ["**/doc/images/**", "**/README*", "**.qdocconf", "**.qdocinc"]
+path = ["**/doc/images/**", "**.qdocconf", "**.qdocinc",
+        "**/README*", "CONTRIBUTING.md"]
 comment = "documentation"
 precedence = "closest"
 SPDX-FileCopyrightText = "Copyright (C) The Qt Company Ltd."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/config.tests/hunspell/main.cpp 
new/qtvirtualkeyboard-everywhere-src-6.12.0/config.tests/hunspell/main.cpp
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/config.tests/hunspell/main.cpp  
2026-08-12 18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/config.tests/hunspell/main.cpp  
2026-09-26 19:45:24.000000000 +0200
@@ -1,5 +1,6 @@
 // Copyright (C) 2020 The Qt Company Ltd.
 // SPDX-License-Identifier: BSD-3-Clause
+// Qt-Security score:insignificant reason:build-system
 
 #include <hunspell/hunspell.h>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/dependencies.yaml 
new/qtvirtualkeyboard-everywhere-src-6.12.0/dependencies.yaml
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/dependencies.yaml       
2026-08-12 18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/dependencies.yaml       
2026-09-26 19:45:24.000000000 +0200
@@ -1,13 +1,13 @@
 dependencies:
   ../qtbase:
-    ref: ef55f427f2c8b410d34f8a7681020a3000cf6866
+    ref: 025bdad181de241e81bf853c8a2d7bf3d19261a9
     required: true
   ../qtdeclarative:
-    ref: 4e3399c26ec57246c08de019cfcbda8d23604cfa
+    ref: 4332fbbb4c340463dc8cee36dda0c85d932122d8
     required: true
   ../qtmultimedia:
-    ref: 6f162ccac1425edbd7b4d1582fabab5973b43d6c
+    ref: 6ca885f084a3984749d53bb50a0e08bdc60e86cc
     required: false
   ../qtsvg:
-    ref: 17ca512f903f935282ebeca496aac5d11ba4199a
+    ref: 883a58532078d003cefef0a549bfe9f885ce41f5
     required: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/licenseRule.json 
new/qtvirtualkeyboard-everywhere-src-6.12.0/licenseRule.json
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/licenseRule.json        
2026-08-12 18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/licenseRule.json        
2026-09-26 19:45:24.000000000 +0200
@@ -58,8 +58,9 @@
     },
     {
         "comment": "Files with the following endings are Documentation 
licensed.",
-        "file_pattern_ending": [".qdoc", ".qdocinc" , ".qdocconf", "README", 
"qt_attribution.json",
-                                 "README.md", "README.txt"],
+        "file_pattern_ending": [".qdoc", ".qdocinc" , ".qdocconf",
+                                "README", "README.md", "README.txt", 
"CONTRIBUTING.md",
+                                "qt_attribution.json"],
         "location":{
             "": {
                 "comment": "",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/components/BaseKey.qml 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/components/BaseKey.qml
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/src/components/BaseKey.qml      
2026-08-12 18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/src/components/BaseKey.qml      
2026-09-26 19:45:24.000000000 +0200
@@ -179,9 +179,13 @@
 
     /*! Sets the show preview attribute.
 
-        By default, the character preview popup is not shown for function keys.
+        By default, the character preview popup is not shown for function keys,
+        nor when the focused input item hides the text it displays, for example
+        a password field. In the latter case the preview would reveal the
+        characters the input item masks.
     */
-    property bool showPreview: enabled && !functionKey && 
!keyboard.navigationModeActive
+    property bool showPreview: enabled && !functionKey && 
!keyboard.navigationModeActive &&
+                               keyboard.inputItemEchoMode === TextInput.Normal
 
     /*! This property holds the pressed status of the key.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/components/Keyboard.qml 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/components/Keyboard.qml
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/src/components/Keyboard.qml     
2026-08-12 18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/src/components/Keyboard.qml     
2026-09-26 19:45:24.000000000 +0200
@@ -38,6 +38,21 @@
     readonly property bool dialableCharactersOnly: 
InputContext.inputMethodHints & Qt.ImhDialableCharactersOnly
     readonly property bool formattedNumbersOnly: InputContext.inputMethodHints 
& Qt.ImhFormattedNumbersOnly
     readonly property bool digitsOnly: InputContext.inputMethodHints & 
Qt.ImhDigitsOnly
+    /*  Echo mode of the focused input item.
+
+        Qt Quick input items clear Qt.ImhHiddenText for TextInput.Password and
+        TextInput.PasswordEchoOnEdit, and set Qt.ImhSensitiveData instead, so
+        the input method hints alone do not tell whether the input item hides
+        the text it displays. Therefore the echo mode of the input item is used
+        when it provides one, and the input method hints only as a fallback.
+    */
+    readonly property int inputItemEchoMode: {
+        const inputItem = InputContext.priv.inputItem
+        const echoMode = inputItem ? inputItem.echoMode : undefined
+        if (echoMode !== undefined)
+            return echoMode
+        return (InputContext.inputMethodHints & Qt.ImhHiddenText) ? 
TextInput.Password : TextInput.Normal
+    }
     property string layout
     property string layoutType: {
         if (keyboard.handwritingMode) return "handwriting"
@@ -655,7 +670,11 @@
         anchors.bottom: wordCandidateView.top
         width: Math.min(shadowInputControl.contentWidth, parent.width)
         height: shadowInputControl.contentHeight
-        visible: fullScreenMode && (shadowInputControlVisibleTimer.running || 
InputContext.animating)
+        // An input item with TextInput.NoEcho displays nothing, and so does 
the
+        // shadow input which mirrors it. Leave it out entirely in that case,
+        // instead of reserving space for a control that cannot show anything.
+        visible: fullScreenMode && keyboard.inputItemEchoMode !== 
TextInput.NoEcho &&
+                 (shadowInputControlVisibleTimer.running || 
InputContext.animating)
 
         Connections {
             target: keyboard
@@ -686,7 +705,8 @@
         inputContext: InputContext.priv.shadow
         anchors.top: shadowInputControl.top
         anchors.left: shadowInputControl.left
-        enabled: keyboard.enabled && fullScreenMode
+        // The handles belong to the shadow input, so they follow its 
visibility.
+        enabled: keyboard.enabled && fullScreenMode && 
keyboard.inputItemEchoMode !== TextInput.NoEcho
     }
 
     ListView {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/components/ShadowInputControl.qml
 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/components/ShadowInputControl.qml
--- 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/components/ShadowInputControl.qml
   2026-08-12 18:35:10.000000000 +0200
+++ 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/components/ShadowInputControl.qml
   2026-09-26 19:45:24.000000000 +0200
@@ -84,7 +84,10 @@
             color: keyboard.style.fullScreenInputColor
             selectionColor: keyboard.style.fullScreenInputSelectionColor
             selectedTextColor: keyboard.style.fullScreenInputSelectedTextColor
-            echoMode: (InputContext.inputMethodHints & Qt.ImhHiddenText) ? 
TextInput.Password : TextInput.Normal
+            // Mask PasswordEchoOnEdit like Password: this input never has the
+            // active focus, so it must not echo the text in clear.
+            echoMode: keyboard.inputItemEchoMode === 
TextInput.PasswordEchoOnEdit ?
+                          TextInput.Password : keyboard.inputItemEchoMode
             selectByMouse: !!InputContext.inputItem && 
!!InputContext.inputItem.selectByMouse
             onCursorPositionChanged: {
                 cursorSyncTimer.restart()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/plugin/plugin.cpp 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/plugin/plugin.cpp
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/src/plugin/plugin.cpp   
2026-08-12 18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/src/plugin/plugin.cpp   
2026-09-26 19:45:24.000000000 +0200
@@ -3,6 +3,7 @@
 // Qt-Security score:significant reason:default
 
 #include "plugin.h"
+#include <private/settings_p.h>
 #include <QtVirtualKeyboard/private/platforminputcontext_p.h>
 #include <QLoggingCategory>
 #if defined(Q_OS_WIN)
@@ -10,27 +11,68 @@
 #endif
 #include <qpa/qplatforminputcontextfactory_p.h>
 
+#include <algorithm>
+
 QT_BEGIN_NAMESPACE
 
+using namespace Qt::StringLiterals;
+
 using namespace QtVirtualKeyboard;
 
 Q_LOGGING_CATEGORY(qlcVirtualKeyboard, "qt.virtualkeyboard")
 
-static const char pluginName[] = "qtvirtualkeyboard";
+static constexpr auto pluginName = "qtvirtualkeyboard"_L1;
 
 QStringList QVirtualKeyboardPlugin::keys() const
 {
-    return QStringList(QLatin1String(pluginName));
+    return QStringList(pluginName);
 }
 
-QPlatformInputContext *QVirtualKeyboardPlugin::create(const QString &system, 
const QStringList &paramList)
+static bool evaluateParameter(QStringView param)
 {
-    Q_UNUSED(paramList);
+    if (param == "wordCandidateListVisible"_L1) {
+        Settings::instance()->setWclAlwaysVisible(true);
+        return true;
+    }
+    if (param == "wordCandidateListAutoCommitWord"_L1) {
+        Settings::instance()->setWclAutoCommitWord(true);
+        return true;
+    }
+    if (param == "fullScreen"_L1) {
+        Settings::instance()->setFullScreenMode(true);
+        return true;
+    }
+
+    const auto equalsPos = param.indexOf(u'=');
+    if (equalsPos == -1 || equalsPos == param.size() - 1)
+        return false;
+
+    const auto keyword = param.sliced(0, equalsPos);
+    const auto value = param.sliced(equalsPos + 1);
+    if (keyword == "style"_L1) {
+        Settings::instance()->setStyleName(value.toString());
+        return true;
+    }
+    if (keyword == "locale"_L1) {
+        Settings::instance()->setLocale(value.toString());
+        return true;
+    }
 
-    if 
(!QPlatformInputContextFactory::requested().contains(QLatin1StringView(pluginName)))
+    return false;
+}
+
+static bool vkbRequested(const QString &req)
+{
+    return req.startsWith(pluginName);
+}
+
+QPlatformInputContext *QVirtualKeyboardPlugin::create(const QString &system, 
const QStringList &paramList)
+{
+    const auto &requested = QPlatformInputContextFactory::requested();
+    if (std::none_of(requested.cbegin(), requested.cend(), vkbRequested))
         return nullptr;
 
-    if (system.compare(system, QLatin1String(pluginName), Qt::CaseInsensitive) 
!= 0)
+    if (system.compare(pluginName, Qt::CaseInsensitive) != 0)
         return nullptr;
 
 #if defined(Q_OS_WIN)
@@ -38,6 +80,17 @@
     ImmDisableIME(0);
 #endif
 
+    for (const auto &param : paramList) {
+        QStringView paramV{param};
+        const auto params = paramV.split(u',');
+        for (const auto &param : params) {
+            if (!evaluateParameter(param)) {
+                qCWarning(qlcVirtualKeyboard, "Invalid parameter \"%s\".",
+                          qPrintable(param.toString()));
+            }
+        }
+    }
+
     PlatformInputContext *platformInputContext = new PlatformInputContext();
 
     return platformInputContext;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/plugins/hunspell/module/CMakeLists.txt
 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/plugins/hunspell/module/CMakeLists.txt
--- 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/plugins/hunspell/module/CMakeLists.txt
      2026-08-12 18:35:10.000000000 +0200
+++ 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/plugins/hunspell/module/CMakeLists.txt
      2026-09-26 19:45:24.000000000 +0200
@@ -28,7 +28,8 @@
     LIBRARIES
         Qt::Core
         Qt::Gui
-    PUBLIC_LIBRARIES
+        Qt::VirtualKeyboardPrivate
+    PRIVATE_MODULE_INTERFACE
         Qt::VirtualKeyboardPrivate
 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/styles/KeyboardStyle.qml 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/styles/KeyboardStyle.qml
--- old/qtvirtualkeyboard-everywhere-src-6.11.2/src/styles/KeyboardStyle.qml    
2026-08-12 18:35:10.000000000 +0200
+++ new/qtvirtualkeyboard-everywhere-src-6.12.0/src/styles/KeyboardStyle.qml    
2026-09-26 19:45:24.000000000 +0200
@@ -16,20 +16,85 @@
     The design size specifies the aspect ratio of the virtual keyboard.
     Styles are scalable according to \l scaleHint, which is
     calculated from the keyboard's actual height and design height.
+
+    The keyboard is laid out at a fixed design size, defined by
+    \l keyboardDesignWidth and \l keyboardDesignHeight, and then scaled to
+    fit the available width. The rendered height follows from the design
+    aspect ratio: \c {keyboardDesignHeight * width / keyboardDesignWidth}.
+    \l keyboardHeight reflects the actual, scaled height used at run time.
+
+    \l keyboardDesignMaximumHeight can optionally cap that height. While the
+    cap is not in effect, the key area spans the full available width. When the
+    scaled height would exceed the maximum, the design aspect ratio is
+    preserved and the whole keyboard is scaled by
+    \c {keyboardDesignMaximumHeight / keyboardDesignHeight} instead, so the
+    keyboard never grows taller than the maximum. In that clamped case the key
+    area becomes narrower than the available width and is centered, leaving
+    empty margins on both sides; only the keyboard background still spans the
+    full width. \l scaleHint is the ratio of \l keyboardHeight to
+    \l keyboardDesignHeight and should be used to keep all pixel dimensions
+    proportional.
+
+    Note that \l keyboardDesignWidth and \l keyboardDesignHeight are
+    authoring units (the built-in styles use \c {2560x800} and are never
+    rendered at that size), whereas \l keyboardDesignMaximumHeight is in
+    logical pixels, because it is compared directly against the rendered
+    height (which is also in logical pixels).
 */
 
 QtObject {
-    /*! The current height of the keyboard. */
+    /*!
+        The current height of the keyboard, in logical pixels.
+
+        This is the actual, scaled height at which the keyboard is rendered.
+        It is set by the keyboard implementation (bound to the height of the
+        key area container) and reflects the layout that results from applying
+        \l keyboardDesignWidth, \l keyboardDesignHeight and, if set,
+        \l keyboardDesignMaximumHeight to the available width. Use it together
+        with \l keyboardDesignHeight to obtain \l scaleHint.
+    */
     property real keyboardHeight
 
-    /*! The design width of the keyboard. */
+    /*!
+        The design width of the keyboard, in authoring units.
+
+        Together with \l keyboardDesignHeight it defines the design aspect
+        ratio of the keyboard layout. The style is authored at this size and
+        then scaled to the actual width; the rendered height is derived from
+        \c {keyboardDesignHeight * width / keyboardDesignWidth}.
+    */
     property real keyboardDesignWidth
 
-    /*! The design height of the keyboard. */
+    /*!
+        The design height of the keyboard, in authoring units.
+
+        Together with \l keyboardDesignWidth it defines the design aspect
+        ratio of the keyboard layout. The rendered height is
+        \c {keyboardDesignHeight * width / keyboardDesignWidth}, unless that
+        value exceeds \l keyboardDesignMaximumHeight, in which case the design
+        aspect ratio is preserved and the whole keyboard is scaled by
+        \c {keyboardDesignMaximumHeight / keyboardDesignHeight} instead. It is
+        also the reference height used by \l scaleHint.
+    */
     property real keyboardDesignHeight
 
     /*!
-        The maximum design height of the keyboard.
+        The maximum design height of the keyboard, in logical pixels.
+
+        When set to a value greater than \c 0, it caps the rendered height
+        that would otherwise result from scaling \l keyboardDesignHeight to
+        the available width. If the scaled height exceeds this maximum, the
+        keyboard is rendered at \l keyboardDesignMaximumHeight; the design
+        aspect ratio is preserved and the whole keyboard is scaled by
+        \c {keyboardDesignMaximumHeight / keyboardDesignHeight} instead, so
+        the keyboard never grows taller than the maximum. A value of \c 0 or
+        less (the default) means there is no maximum, so the height follows
+        \l keyboardDesignHeight scaled to the width.
+
+        Unlike \l keyboardDesignWidth and \l keyboardDesignHeight, this value
+        is in logical pixels, because it is compared directly against the
+        rendered height.
+
         \since 6.11
     */
     property real keyboardDesignMaximumHeight
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/virtualkeyboard/doc/src/build.qdoc
 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/virtualkeyboard/doc/src/build.qdoc
--- 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/virtualkeyboard/doc/src/build.qdoc
  2026-08-12 18:35:10.000000000 +0200
+++ 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/virtualkeyboard/doc/src/build.qdoc
  2026-09-26 19:45:24.000000000 +0200
@@ -18,7 +18,7 @@
     \li Qt Virtual Keyboard Demo application
 \row
     \li \e src/components/
-    \li Qt Virtual Keyboard Components QML plugin 
(QtQuick.VirtualKeyboard.Components)
+    \li Qt Virtual Keyboard Components QML plugin 
(\l{QtQuick.VirtualKeyboard.Components})
 \row
     \li \e src/plugin/
     \li Qt Virtual Keyboard platform input context plugin. This plugin
@@ -26,16 +26,16 @@
         layer between QML input context and platform.
 \row
     \li \e src/plugins/
-    \li A directory containing Qt Virtual Keyboard plugins 
(QtQuick.VirtualKeyboard.Plugins),
+    \li A directory containing Qt Virtual Keyboard plugins 
(\l{QtQuick.VirtualKeyboard}.Plugins),
         which implement complex input methods, such as the \e 
HunspellInputMethod.
         Build time configuration specifies which plugins are built and loaded 
at runtime.
 \row
     \li \e src/settings/
-    \li Qt Virtual Keyboard Settings QML plugin 
(QtQuick.VirtualKeyboard.Settings).
+    \li Qt Virtual Keyboard Settings QML plugin 
(\l{QtQuick.VirtualKeyboard.Settings}).
         This plugin provides application-configurable settings for the virtual 
keyboard.
 \row
     \li \e src/styles/
-    \li Qt Virtual Keyboard Styles QML plugin (QtQuick.VirtualKeyboard.Styles).
+    \li Qt Virtual Keyboard Styles QML plugin 
(\l{QtQuick.VirtualKeyboard.Styles}).
 \row
     \li \e src/virtualkeyboard/
     \li Qt Virtual Keyboard module and QML plugin.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/virtualkeyboard/doc/src/deployment-guide.qdoc
 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/virtualkeyboard/doc/src/deployment-guide.qdoc
--- 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/virtualkeyboard/doc/src/deployment-guide.qdoc
       2026-08-12 18:35:10.000000000 +0200
+++ 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/virtualkeyboard/doc/src/deployment-guide.qdoc
       2026-09-26 19:45:24.000000000 +0200
@@ -181,6 +181,34 @@
 input panel height will be automatically updated according to the available
 width; the aspect ratio of the input panel is constant.
 
+\section1 Plugin Parameters
+
+Some parameters may be specified by appending them to the value of the
+ \c QT_IM_MODULE (following a colon), for example
+\c QT_IM_MODULE=qtvirtualkeyboard:wordCandidateListVisible .
+Some parameters are key value pairs separated by \c "=".
+
+\table
+ \header
+     \li Parameter
+     \li Purpose
+ \row
+     \li wordCandidateListVisible
+     \li Shows the word candidate list.
+ \row
+     \li wordCandidateListAutoCommitWord
+     \li Enables AutoCommit for the word candidate list.
+ \row
+     \li fullScreen
+     \li Use full screen mode
+ \row
+     \li style=<name>
+     \li Set the style
+ \row
+     \li locale=<name>
+     \li Set the locale
+\endtable
+
 \section1 Environment Variables
 
 There are several environment variables defined by the module that are listed 
below:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/virtualkeyboard/qvirtualkeyboardselectionlistmodel.cpp
 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/virtualkeyboard/qvirtualkeyboardselectionlistmodel.cpp
--- 
old/qtvirtualkeyboard-everywhere-src-6.11.2/src/virtualkeyboard/qvirtualkeyboardselectionlistmodel.cpp
      2026-08-12 18:35:10.000000000 +0200
+++ 
new/qtvirtualkeyboard-everywhere-src-6.12.0/src/virtualkeyboard/qvirtualkeyboardselectionlistmodel.cpp
      2026-09-26 19:45:24.000000000 +0200
@@ -210,7 +210,7 @@
     \property QVirtualKeyboardSelectionListModel::count
     \internal
 */
-/*
+/*!
     \internal
 */
 int QVirtualKeyboardSelectionListModel::count() const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/tests/auto/inputpanel/data/tst_inputpanel.qml
 
new/qtvirtualkeyboard-everywhere-src-6.12.0/tests/auto/inputpanel/data/tst_inputpanel.qml
--- 
old/qtvirtualkeyboard-everywhere-src-6.11.2/tests/auto/inputpanel/data/tst_inputpanel.qml
   2026-08-12 18:35:10.000000000 +0200
+++ 
new/qtvirtualkeyboard-everywhere-src-6.12.0/tests/auto/inputpanel/data/tst_inputpanel.qml
   2026-09-26 19:45:24.000000000 +0200
@@ -376,6 +376,8 @@
                 { initText: "", initInputMethodHints: Qt.ImhNoPredictiveText | 
Qt.ImhNoAutoUppercase, inputKey: Qt.Key_AsciiTilde, outputKeyCountMin: 1, 
outputKey: Qt.Key_AsciiTilde, preview: true, outputKeyText: "~", 
outputKeyModifiers: Qt.NoModifier, outputKeyRepeat: false, outputText: "~" },
                 // alternative key press, i.e. long key press
                 { initText: "", initInputMethodHints: Qt.ImhNoPredictiveText | 
Qt.ImhNoAutoUppercase, inputKey: "\u00E4", outputKeyCountMin: 1, outputKey: 
Qt.Key_A, preview: true, outputKeyText: "\u00E4", outputKeyModifiers: 
Qt.NoModifier, outputKeyRepeat: false, outputText: "\u00E4" },
+                // no preview when the input item hides the text it displays
+                { initText: "", initInputMethodHints: Qt.ImhNoPredictiveText | 
Qt.ImhNoAutoUppercase | Qt.ImhHiddenText, inputKey: Qt.Key_A, 
outputKeyCountMin: 1, outputKey: Qt.Key_A, preview: false, outputKeyText: "a", 
outputKeyModifiers: Qt.NoModifier, outputKeyRepeat: false, outputText: "a" },
                 // function key press
                 { initText: "x", initInputMethodHints: Qt.ImhNoPredictiveText 
| Qt.ImhNoAutoUppercase, inputKey: Qt.Key_Shift, outputKeyCountMin: 1, 
outputKey: Qt.Key_Shift, preview: false, outputKeyText: "", outputKeyModifiers: 
Qt.NoModifier, outputKeyRepeat: false, outputText: "x" },
                 { initText: "x", initInputMethodHints: Qt.ImhNoPredictiveText 
| Qt.ImhNoAutoUppercase, inputKey: Qt.Key_Backspace, outputKeyCountMin: 1, 
outputKey: Qt.Key_Backspace, preview: false, outputKeyText: "", 
outputKeyModifiers: Qt.NoModifier, outputKeyRepeat: false, outputText: "" },
@@ -410,6 +412,24 @@
             compare(textInput.text, data.outputText)
         }
 
+        function test_keyPressNoPreviewForPasswordField() {
+            prepareTest()
+
+            // A Qt Quick password field reports Qt.ImhSensitiveData instead of
+            // Qt.ImhHiddenText, so the preview must follow the echo mode of 
the
+            // input item rather than the input method hints.
+            let passwordField = createTemporaryObject(textFieldComp, 
container, {echoMode: TextInput.Password})
+            passwordField.forceActiveFocus()
+            waitForRendering(inputPanel)
+            verify(passwordField.activeFocus === true)
+            verify(inputPanel.visible === true)
+
+            inputPanel.characterPreviewBubbleSpy.clear()
+            verify(inputPanel.virtualKeyClick(Qt.Key_A))
+            compare(inputPanel.characterPreviewBubbleSpy.count, 0)
+            compare(passwordField.text, "a")
+        }
+
         function test_keyReleaseInaccuracy() {
             prepareTest({ initInputMethodHints: Qt.ImhNoPredictiveText })
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/tests/auto/shadowinput/data/inputpanel/inputpanel.qml
 
new/qtvirtualkeyboard-everywhere-src-6.12.0/tests/auto/shadowinput/data/inputpanel/inputpanel.qml
--- 
old/qtvirtualkeyboard-everywhere-src-6.11.2/tests/auto/shadowinput/data/inputpanel/inputpanel.qml
   2026-08-12 18:35:10.000000000 +0200
+++ 
new/qtvirtualkeyboard-everywhere-src-6.12.0/tests/auto/shadowinput/data/inputpanel/inputpanel.qml
   2026-09-26 19:45:24.000000000 +0200
@@ -16,6 +16,7 @@
     property bool fullScreenMode: true
     property bool shadowInputVisible: keyboard.shadowInputControl.visible
     property string shadowInputText: keyboard.shadowInputControl.textEdit.text
+    property int shadowInputEchoMode: 
keyboard.shadowInputControl.textEdit.echoMode
     Binding {
         target: VirtualKeyboardSettings
         property: "fullScreenMode"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtvirtualkeyboard-everywhere-src-6.11.2/tests/auto/shadowinput/data/tst_shadowinput.qml
 
new/qtvirtualkeyboard-everywhere-src-6.12.0/tests/auto/shadowinput/data/tst_shadowinput.qml
--- 
old/qtvirtualkeyboard-everywhere-src-6.11.2/tests/auto/shadowinput/data/tst_shadowinput.qml
 2026-08-12 18:35:10.000000000 +0200
+++ 
new/qtvirtualkeyboard-everywhere-src-6.12.0/tests/auto/shadowinput/data/tst_shadowinput.qml
 2026-09-26 19:45:24.000000000 +0200
@@ -69,6 +69,16 @@
             }
         }
 
+        Component {
+            id: passwordInputComp
+            TextInput {
+                visible: true
+                focus: true
+                echoMode: TextInput.Password
+                color: "white"
+            }
+        }
+
         function test_fullScreenModeBindingWorks() {
             prepareTest()
 
@@ -88,5 +98,22 @@
             textInput.text = "world"
             compare(inputPanel.shadowInputText, "")
         }
+
+        function test_shadowInputMasksPasswordInput() {
+            prepareTest()
+
+            inputPanel.fullScreenMode = true
+            waitForRendering(inputPanel)
+
+            let passwordInput = createTemporaryObject(passwordInputComp, 
container)
+            passwordInput.forceActiveFocus()
+            waitForRendering(inputPanel)
+            verify(passwordInput.activeFocus === true)
+
+            // A Qt Quick password field reports Qt.ImhSensitiveData instead of
+            // Qt.ImhHiddenText, so the shadow input must follow the echo mode
+            // of the input item rather than the input method hints.
+            compare(inputPanel.shadowInputEchoMode, TextInput.Password)
+        }
     }
 }

Reply via email to