aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDmitriy Yatmanov <dyatmanov@astralinux.ru>2019-04-30 13:38:23 +0300
committerDmitriy Yatmanov <dyatmanov@astralinux.ru>2019-05-13 11:37:19 +0000
commit460a7cee80e21df752501161c91b08c2059612fb (patch)
tree349d6a66315e36317cf62ea7c42ffbdf40c848a9 /src
parentfe52858df5c641eb9fb0df02e33d5b328d6b00e7 (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.qdoc6
-rw-r--r--src/virtualkeyboard/platforminputcontext.cpp12
-rw-r--r--src/virtualkeyboard/platforminputcontext_p.h1
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