summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandxdgshell.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-08-28 10:09:27 +0200
committerPaul Olav Tvete <paul.tvete@gmail.com>2016-08-28 10:12:09 +0200
commitb0c416dede8b6ca596eb2a13361d98613e8c9533 (patch)
treeadddaa3622e0013858355ad6994c8e6e892ce254 /src/client/qwaylandxdgshell.cpp
parent9610eccdf237c5ffc21630cee9c364d0fe871901 (diff)
parentae9bfd29b42156fb8f04dfa60b9e48ce10ebacb8 (diff)
Merge remote-tracking branch 'qt/5.7' into 5.8v5.8.0-alpha1
Conflicts: src/compositor/compositor_api/qwaylandseat.cpp src/compositor/compositor_api/qwaylandview.cpp tests/auto/compositor/compositor.pro tests/auto/compositor/compositor/testinputdevice.cpp tests/auto/compositor/compositor/testinputdevice.h tests/auto/compositor/testinputdevice.cpp tests/auto/compositor/testinputdevice.h tests/auto/compositor/testseat.cpp tests/auto/compositor/testseat.h Change-Id: I98e045908dd964e5d4120bd35e71b8839c0d923a
Diffstat (limited to 'src/client/qwaylandxdgshell.cpp')
-rw-r--r--src/client/qwaylandxdgshell.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/client/qwaylandxdgshell.cpp b/src/client/qwaylandxdgshell.cpp
index 383129863..6a378b8db 100644
--- a/src/client/qwaylandxdgshell.cpp
+++ b/src/client/qwaylandxdgshell.cpp
@@ -43,6 +43,8 @@
#include "qwaylandwindow_p.h"
#include "qwaylandinputdevice_p.h"
#include "qwaylandscreen_p.h"
+#include "qwaylandxdgpopup_p.h"
+#include "qwaylandxdgsurface_p.h"
#include <QtCore/QDebug>
@@ -66,6 +68,23 @@ QWaylandXdgShell::~QWaylandXdgShell()
xdg_shell_destroy(object());
}
+QWaylandXdgSurface *QWaylandXdgShell::createXdgSurface(QWaylandWindow *window)
+{
+ return new QWaylandXdgSurface(this, window);
+}
+
+QWaylandXdgPopup *QWaylandXdgShell::createXdgPopup(QWaylandWindow *window)
+{
+ QWaylandWindow *parentWindow = window->transientParent();
+ ::wl_surface *parentSurface = parentWindow->object();
+ QWaylandInputDevice *inputDevice = window->display()->lastInputDevice();
+ ::wl_seat *seat = inputDevice->wl_seat();
+ uint serial = inputDevice->serial();
+ QPoint position = window->geometry().topLeft();
+ int x = position.x() + parentWindow->frameMargins().left();
+ int y = position.y() + parentWindow->frameMargins().top();
+ return new QWaylandXdgPopup(get_xdg_popup(window->object(), parentSurface, seat, serial, x, y), window);
+}
void QWaylandXdgShell::xdg_shell_ping(uint32_t serial)
{