diff options
author | Dmitriy Yatmanov <dyatmanov@astralinux.ru> | 2019-04-30 13:38:23 +0300 |
---|---|---|
committer | Dmitriy Yatmanov <dyatmanov@astralinux.ru> | 2019-05-13 11:37:19 +0000 |
commit | 460a7cee80e21df752501161c91b08c2059612fb (patch) | |
tree | 349d6a66315e36317cf62ea7c42ffbdf40c848a9 /src | |
parent | fe52858df5c641eb9fb0df02e33d5b328d6b00e7 (diff) |
Add environment variable for disabling desktop method integration
Don't create instance of DesktopInputPanel if variable
QT_VIRTUALKEYBOARD_DESKTOP_DISABLE is set. In this case we can use only
application integration method without recompiling with
CONFIG+=disable-desktop.
Change-Id: I935880174b7928a4dd7a4ff9ff21b6f27b5fead6
Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/virtualkeyboard/doc/src/deployment-guide.qdoc | 6 | ||||
-rw-r--r-- | src/virtualkeyboard/platforminputcontext.cpp | 12 | ||||
-rw-r--r-- | src/virtualkeyboard/platforminputcontext_p.h | 1 |
3 files changed, 16 insertions, 3 deletions
diff --git a/src/virtualkeyboard/doc/src/deployment-guide.qdoc b/src/virtualkeyboard/doc/src/deployment-guide.qdoc index 6e1a2642..718068d7 100644 --- a/src/virtualkeyboard/doc/src/deployment-guide.qdoc +++ b/src/virtualkeyboard/doc/src/deployment-guide.qdoc @@ -91,7 +91,8 @@ for using the plugin: 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, -by adding \c CONFIG+=disable-desktop to the \c qmake command line. +by using the \c QT_VIRTUALKEYBOARD_DESKTOP_DISABLE environment variable, +or by adding \c CONFIG+=disable-desktop to the \c qmake command line. \section2 Using Qt Virtual Keyboard with Qt Wayland @@ -254,6 +255,9 @@ There are several environment variables defined by the module that are listed be \li QT_VIRTUALKEYBOARD_LAYOUT_PATH \li Specifies the location of the layouts to be used with the virtual keyboard. \row + \li QT_VIRTUALKEYBOARD_DESKTOP_DISABLE + \li Disables the desktop integration method. + \row \li LIPI_ROOT \li Specifies the location of lipi-toolkit. diff --git a/src/virtualkeyboard/platforminputcontext.cpp b/src/virtualkeyboard/platforminputcontext.cpp index 736af37c..fc229f52 100644 --- a/src/virtualkeyboard/platforminputcontext.cpp +++ b/src/virtualkeyboard/platforminputcontext.cpp @@ -46,6 +46,8 @@ namespace QtVirtualKeyboard { Q_LOGGING_CATEGORY(qlcVirtualKeyboard, "qt.virtualkeyboard") +static const char disableDesktopEnvVarName[] = "QT_VIRTUALKEYBOARD_DESKTOP_DISABLE"; + /*! \class QtVirtualKeyboard::PlatformInputContext \internal @@ -58,8 +60,14 @@ PlatformInputContext::PlatformInputContext() : m_locale(), m_inputDirection(m_locale.textDirection()), m_filterEvent(nullptr), - m_visible(false) + m_visible(false), + m_desktopModeDisabled(false) { + if (!qEnvironmentVariableIsEmpty(disableDesktopEnvVarName)) { + bool ok; + int desktopModeDisabled = qgetenv(disableDesktopEnvVarName).toInt(&ok); + m_desktopModeDisabled = ok && desktopModeDisabled != 0; + } } PlatformInputContext::~PlatformInputContext() @@ -90,7 +98,7 @@ 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) { + if (enabled && !m_inputPanel && !m_desktopModeDisabled) { m_inputPanel = new DesktopInputPanel(this); m_inputPanel->createView(); if (m_inputContext) { diff --git a/src/virtualkeyboard/platforminputcontext_p.h b/src/virtualkeyboard/platforminputcontext_p.h index 50ccf561..9fadc00f 100644 --- a/src/virtualkeyboard/platforminputcontext_p.h +++ b/src/virtualkeyboard/platforminputcontext_p.h @@ -118,6 +118,7 @@ private: Qt::LayoutDirection m_inputDirection; QEvent *m_filterEvent; bool m_visible; + bool m_desktopModeDisabled; }; } // namespace QtVirtualKeyboard |