summaryrefslogtreecommitdiffstats
path: root/src/compositor/extensions/qwaylandxdgshell.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor/extensions/qwaylandxdgshell.cpp')
-rw-r--r--src/compositor/extensions/qwaylandxdgshell.cpp71
1 files changed, 41 insertions, 30 deletions
diff --git a/src/compositor/extensions/qwaylandxdgshell.cpp b/src/compositor/extensions/qwaylandxdgshell.cpp
index a502cdf34..4f468b0ae 100644
--- a/src/compositor/extensions/qwaylandxdgshell.cpp
+++ b/src/compositor/extensions/qwaylandxdgshell.cpp
@@ -75,33 +75,6 @@ void QWaylandXdgShellPrivate::unregisterXdgSurface(QWaylandXdgSurface *xdgSurfac
qWarning("%s Unexpected state. Can't find registered xdg surface\n", Q_FUNC_INFO);
}
-Qt::Edges QWaylandXdgShellPrivate::convertToEdges(uint xdgEdges)
-{
- switch (xdgEdges) {
- case XDG_POSITIONER_ANCHOR_NONE:
- return Qt::Edges();
- case XDG_POSITIONER_ANCHOR_TOP:
- return Qt::TopEdge;
- case XDG_POSITIONER_ANCHOR_BOTTOM:
- return Qt::BottomEdge;
- case XDG_POSITIONER_ANCHOR_LEFT:
- return Qt::LeftEdge;
- case XDG_POSITIONER_ANCHOR_RIGHT:
- return Qt::RightEdge;
- case XDG_POSITIONER_ANCHOR_TOP_LEFT:
- return Qt::TopEdge | Qt::LeftEdge;
- case XDG_POSITIONER_ANCHOR_BOTTOM_LEFT:
- return Qt::BottomEdge | Qt::LeftEdge;
- case XDG_POSITIONER_ANCHOR_TOP_RIGHT:
- return Qt::TopEdge | Qt::RightEdge;
- case XDG_POSITIONER_ANCHOR_BOTTOM_RIGHT:
- return Qt::BottomEdge | Qt::RightEdge;
- default:
- qWarning() << "Unknown Wayland xdg edge" << xdgEdges;
- return Qt::Edges();
- }
-}
-
QWaylandXdgSurface *QWaylandXdgShellPrivate::xdgSurfaceFromSurface(QWaylandSurface *surface)
{
for (QWaylandXdgSurface *xdgSurface : qAsConst(m_xdgSurfaces)) {
@@ -1296,6 +1269,11 @@ void QWaylandXdgToplevelPrivate::handleFocusReceived()
}
}
+Qt::Edges QWaylandXdgToplevelPrivate::convertToEdges(resize_edge edge)
+{
+ return Qt::Edges(((edge & 0b1100) >> 1) | ((edge & 0b0010) << 2) | (edge & 0b0001));
+}
+
void QWaylandXdgToplevelPrivate::xdg_toplevel_destroy_resource(QtWaylandServer::xdg_toplevel::Resource *resource)
{
Q_UNUSED(resource);
@@ -1379,7 +1357,7 @@ void QWaylandXdgToplevelPrivate::xdg_toplevel_resize(QtWaylandServer::xdg_toplev
Q_UNUSED(serial);
Q_Q(QWaylandXdgToplevel);
QWaylandSeat *seat = QWaylandSeat::fromSeatResource(seatResource);
- emit q->startResize(seat, QWaylandXdgShellPrivate::convertToEdges(edges));
+ emit q->startResize(seat, convertToEdges(resize_edge(edges)));
}
void QWaylandXdgToplevelPrivate::xdg_toplevel_set_max_size(QtWaylandServer::xdg_toplevel::Resource *resource, int32_t width, int32_t height)
@@ -1974,7 +1952,7 @@ void QWaylandXdgPositioner::xdg_positioner_set_anchor_rect(QtWaylandServer::xdg_
void QWaylandXdgPositioner::xdg_positioner_set_anchor(QtWaylandServer::xdg_positioner::Resource *resource, uint32_t anchor)
{
- Qt::Edges anchorEdges = QWaylandXdgShellPrivate::convertToEdges(anchor);
+ Qt::Edges anchorEdges = convertToEdges(xdg_positioner::anchor(anchor));
if ((anchorEdges & Qt::BottomEdge && anchorEdges & Qt::TopEdge) ||
(anchorEdges & Qt::LeftEdge && anchorEdges & Qt::RightEdge)) {
@@ -1988,7 +1966,7 @@ void QWaylandXdgPositioner::xdg_positioner_set_anchor(QtWaylandServer::xdg_posit
void QWaylandXdgPositioner::xdg_positioner_set_gravity(QtWaylandServer::xdg_positioner::Resource *resource, uint32_t gravity)
{
- Qt::Edges gravityEdges = QWaylandXdgShellPrivate::convertToEdges(gravity);
+ Qt::Edges gravityEdges = convertToEdges(xdg_positioner::gravity(gravity));
if ((gravityEdges & Qt::BottomEdge && gravityEdges & Qt::TopEdge) ||
(gravityEdges & Qt::LeftEdge && gravityEdges & Qt::RightEdge)) {
@@ -2017,4 +1995,37 @@ QWaylandXdgPositioner *QWaylandXdgPositioner::fromResource(wl_resource *resource
return static_cast<QWaylandXdgPositioner *>(Resource::fromResource(resource)->xdg_positioner_object);
}
+Qt::Edges QWaylandXdgPositioner::convertToEdges(anchor anchor)
+{
+ switch (anchor) {
+ case anchor_none:
+ return Qt::Edges();
+ case anchor_top:
+ return Qt::TopEdge;
+ case anchor_bottom:
+ return Qt::BottomEdge;
+ case anchor_left:
+ return Qt::LeftEdge;
+ case anchor_right:
+ return Qt::RightEdge;
+ case anchor_top_left:
+ return Qt::TopEdge | Qt::LeftEdge;
+ case anchor_bottom_left:
+ return Qt::BottomEdge | Qt::LeftEdge;
+ case anchor_top_right:
+ return Qt::TopEdge | Qt::RightEdge;
+ case anchor_bottom_right:
+ return Qt::BottomEdge | Qt::RightEdge;
+ default:
+ qWarning() << "Unknown Wayland xdg edge" << anchor;
+ return Qt::Edges();
+ }
+}
+
+Qt::Edges QWaylandXdgPositioner::convertToEdges(QWaylandXdgPositioner::gravity gravity)
+{
+ return convertToEdges(anchor(gravity));
+}
+
+
QT_END_NAMESPACE