diff options
author | Johan Klokkhammer Helsing <johan.helsing@qt.io> | 2019-10-03 10:05:20 +0200 |
---|---|---|
committer | Johan Helsing <johan.helsing@qt.io> | 2019-10-28 08:02:17 +0000 |
commit | 096bd6f6509dbf241eb33685f672112c38991c53 (patch) | |
tree | 698626298927310979481d9a0b1abd93ca3f63b1 | |
parent | 03e8c91fc28b77c4f027b6c6d582b85878efae41 (diff) | |
download | qtwayland-096bd6f6509dbf241eb33685f672112c38991c53.tar.gz |
Compositor: Fix crash when trying to maximize an XdgToplevel with no output
This cherry-pick also fixes a shadowed, unused variable introduced in
the original commit.
Fixes: QTBUG-78969
Change-Id: I4ecde3725b5307251070e331c97d96df328a3772
(cherry picked from commit 11f2e7df5762a23e66d1755b34f5f3d07208ae32)
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
-rw-r--r-- | src/compositor/extensions/qwaylandxdgshellintegration.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/compositor/extensions/qwaylandxdgshellintegration.cpp b/src/compositor/extensions/qwaylandxdgshellintegration.cpp index cc8faf6c..863efa75 100644 --- a/src/compositor/extensions/qwaylandxdgshellintegration.cpp +++ b/src/compositor/extensions/qwaylandxdgshellintegration.cpp @@ -179,8 +179,12 @@ void XdgToplevelIntegration::handleUnsetMaximized() void XdgToplevelIntegration::handleMaximizedChanged() { if (m_toplevel->maximized()) { - QWaylandOutput *output = m_item->view()->output(); - m_item->moveItem()->setPosition(output->position() + output->availableGeometry().topLeft()); + if (auto *output = m_item->view()->output()) { + m_item->moveItem()->setPosition(output->position() + output->availableGeometry().topLeft()); + } else { + qCWarning(qLcWaylandCompositor) << "The view does not have a corresponding output," + << "ignoring maximized state"; + } } else { m_item->moveItem()->setPosition(windowedGeometry.initialPosition); } @@ -231,8 +235,12 @@ void XdgToplevelIntegration::handleUnsetFullscreen() void XdgToplevelIntegration::handleFullscreenChanged() { if (m_toplevel->fullscreen()) { - QWaylandOutput *output = m_item->view()->output(); - m_item->moveItem()->setPosition(output->position() + output->geometry().topLeft()); + if (auto *output = m_item->view()->output()) { + m_item->moveItem()->setPosition(output->position() + output->geometry().topLeft()); + } else { + qCWarning(qLcWaylandCompositor) << "The view does not have a corresponding output," + << "ignoring fullscreen state"; + } } else { m_item->moveItem()->setPosition(windowedGeometry.initialPosition); } |