summaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@qt.io>2017-03-01 15:47:21 +0100
committerPaul Olav Tvete <paul.tvete@qt.io>2017-03-01 15:48:39 +0100
commita259232f3a661b8916497b056cb3d50c396c3d94 (patch)
tree0e73cb46bc78ece0db7e02cd5323018def74e09b /src/client
parent852610be9406a46997b5e22e0988e840e8673bf0 (diff)
parent7d527c1914710a511c06713bbda1572b767cea34 (diff)
Merge remote-tracking branch 'qt/5.8' into 5.9
Diffstat (limited to 'src/client')
-rw-r--r--src/client/configure.json2
-rw-r--r--src/client/qwaylanddisplay.cpp9
-rw-r--r--src/client/qwaylandwindow.cpp16
-rw-r--r--src/client/qwaylandwindow_p.h1
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();