diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-02-19 16:05:24 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-02-19 16:05:24 +0100 |
commit | dd24398ce7323872413b8a21fc9ae192ff4c9f02 (patch) | |
tree | 17485e9defe1c6a0b9d1f9a3f9110da3fe462ca4 | |
parent | 36ba9b9bb49d9568c96b8b6f138860ac2afc8ac3 (diff) | |
parent | bebe9beff3e9874498474cec32634cf281ddc453 (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.cpp | 7 | ||||
-rw-r--r-- | src/client/qwaylandwindow.cpp | 7 |
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); } |