summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-02-19 16:05:24 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-02-19 16:05:24 +0100
commitdd24398ce7323872413b8a21fc9ae192ff4c9f02 (patch)
tree17485e9defe1c6a0b9d1f9a3f9110da3fe462ca4
parent36ba9b9bb49d9568c96b8b6f138860ac2afc8ac3 (diff)
parentbebe9beff3e9874498474cec32634cf281ddc453 (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: .qmake.conf src/compositor/compositor_api/qwaylandquicksurface.cpp Change-Id: Ic5e4217549c6c08740dba5ac1794d0a8e53f3a47
-rw-r--r--src/client/qwaylandinputdevice.cpp7
-rw-r--r--src/client/qwaylandwindow.cpp7
2 files changed, 11 insertions, 3 deletions
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index e6237970a..44a216580 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -651,6 +651,13 @@ void QWaylandInputDevice::Keyboard::keyboard_key(uint32_t serial, uint32_t time,
qtkey = QWaylandXkb::keysymToQtKey(sym, modifiers, text);
+
+ // Map control + letter to proper text
+ if (utf32 >= 'A' && utf32 <= '~' && (modifiers & Qt::ControlModifier)) {
+ utf32 &= ~0x60;
+ text = QString::fromUcs4(&utf32, 1);
+ }
+
QWindowSystemInterface::handleExtendedKeyEvent(window->window(),
time, type, qtkey,
modifiers,
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 5d5e6687a..9ad902936 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -95,8 +95,8 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
{
static WId id = 1;
mWindowId = id++;
-
- initWindow();
+ if (window->type() != Qt::Desktop)
+ initWindow();
}
QWaylandWindow::~QWaylandWindow()
@@ -129,7 +129,8 @@ void QWaylandWindow::initWindow()
if (::wl_subsurface *ss = mDisplay->createSubSurface(this, p)) {
mSubSurfaceWindow = new QWaylandSubSurface(this, p, ss);
}
- } else if (!(window()->flags() & Qt::BypassWindowManagerHint)) {
+ } else if (!(qEnvironmentVariableIsSet("QT_WAYLAND_USE_BYPASSWINDOWMANAGERHINT") &&
+ window()->flags() & Qt::BypassWindowManagerHint)) {
mShellSurface = mDisplay->createShellSurface(this);
}