diff options
author | Paul Olav Tvete <paul.tvete@qt.io> | 2017-03-01 15:47:21 +0100 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@qt.io> | 2017-03-01 15:48:39 +0100 |
commit | a259232f3a661b8916497b056cb3d50c396c3d94 (patch) | |
tree | 0e73cb46bc78ece0db7e02cd5323018def74e09b /src/client | |
parent | 852610be9406a46997b5e22e0988e840e8673bf0 (diff) | |
parent | 7d527c1914710a511c06713bbda1572b767cea34 (diff) |
Merge remote-tracking branch 'qt/5.8' into 5.9
Change-Id: I43cd0147a63b5523e3112f09bbfe60e1d6636e6c
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/configure.json | 2 | ||||
-rw-r--r-- | src/client/qwaylanddisplay.cpp | 9 | ||||
-rw-r--r-- | src/client/qwaylandwindow.cpp | 16 | ||||
-rw-r--r-- | src/client/qwaylandwindow_p.h | 1 |
4 files changed, 23 insertions, 5 deletions
diff --git a/src/client/configure.json b/src/client/configure.json index b2a8fbc0b..ea0bbe22c 100644 --- a/src/client/configure.json +++ b/src/client/configure.json @@ -82,7 +82,7 @@ "output": [ "privateFeature" ] }, "wayland-brcm": { - "label": "Rasberry Pi", + "label": "Raspberry Pi", "condition": "features.wayland-client && features.eglfs_brcm", "output": [ "privateFeature" ] }, diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp index 851d715b7..8e4c8d67c 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp @@ -421,7 +421,14 @@ void QWaylandDisplay::handleKeyboardFocusChanged(QWaylandInputDevice *inputDevic if (mLastKeyboardFocus == keyboardFocus) return; - mWaylandIntegration->mShellIntegration->handleKeyboardFocusChanged(keyboardFocus, mLastKeyboardFocus); + if (mWaylandIntegration->mShellIntegration) { + mWaylandIntegration->mShellIntegration->handleKeyboardFocusChanged(keyboardFocus, mLastKeyboardFocus); + } else { + if (keyboardFocus) + handleWindowActivated(keyboardFocus); + if (mLastKeyboardFocus) + handleWindowDeactivated(mLastKeyboardFocus); + } mLastKeyboardFocus = keyboardFocus; } diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index 75c5b2f9d..a42c4796d 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -95,6 +95,7 @@ QWaylandWindow::QWaylandWindow(QWindow *window) { static WId id = 1; mWindowId = id++; + initializeWlSurface(); } QWaylandWindow::~QWaylandWindow() @@ -127,7 +128,7 @@ void QWaylandWindow::initWindow() return; if (!isInitialized()) - init(mDisplay->createSurface(static_cast<QtWayland::wl_surface *>(this))); + initializeWlSurface(); if (shouldCreateSubSurface()) { Q_ASSERT(!mSubSurfaceWindow); @@ -200,6 +201,11 @@ void QWaylandWindow::initWindow() mFlags = window()->flags(); } +void QWaylandWindow::initializeWlSurface() +{ + init(mDisplay->createSurface(static_cast<QtWayland::wl_surface *>(this))); +} + bool QWaylandWindow::shouldCreateShellSurface() const { if (shouldCreateSubSurface()) @@ -225,7 +231,8 @@ void QWaylandWindow::reset() mShellSurface = 0; delete mSubSurfaceWindow; mSubSurfaceWindow = 0; - destroy(); + if (isInitialized()) + destroy(); if (mFrameCallback) wl_callback_destroy(mFrameCallback); @@ -360,8 +367,11 @@ void QWaylandWindow::setMask(const QRegion &mask) mMask = mask; + if (!isInitialized()) + return; + if (mMask.isEmpty()) { - set_input_region(0); + set_input_region(nullptr); } else { struct ::wl_region *region = mDisplay->createRegion(mMask); set_input_region(region); diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h index e67cf0afe..8e72b1076 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -248,6 +248,7 @@ private: bool setWindowStateInternal(Qt::WindowState flags); void setGeometry_helper(const QRect &rect); void initWindow(); + void initializeWlSurface(); bool shouldCreateShellSurface() const; bool shouldCreateSubSurface() const; void reset(); |