summaryrefslogtreecommitdiffstats
path: root/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp')
-rw-r--r--src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
index 12cc95b15..410f27001 100644
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
@@ -73,10 +73,15 @@ bool QWaylandXdgShellV5Integration::initialize(QWaylandDisplay *display)
QWaylandShellSurface *QWaylandXdgShellV5Integration::createShellSurface(QWaylandWindow *window)
{
QWaylandInputDevice *inputDevice = window->display()->lastInputDevice();
- if (window->window()->type() == Qt::WindowType::Popup && inputDevice)
- return m_xdgShell->createXdgPopup(window, inputDevice);
- else
- return m_xdgShell->createXdgSurface(window);
+ if (window->window()->type() == Qt::WindowType::Popup && inputDevice) {
+ if (auto *popup = m_xdgShell->createXdgPopup(window, inputDevice))
+ return popup;
+
+ qWarning(lcQpaWayland) << "Failed to create xdg-popup v5 for window" << window->window()
+ << "falling back to creating an xdg-surface";
+ }
+
+ return m_xdgShell->createXdgSurface(window);
}
void QWaylandXdgShellV5Integration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) {