diff options
Diffstat (limited to 'src/widgets/kernel/qtooltip.cpp')
| -rw-r--r-- | src/widgets/kernel/qtooltip.cpp | 13 | 
1 files changed, 13 insertions, 0 deletions
| diff --git a/src/widgets/kernel/qtooltip.cpp b/src/widgets/kernel/qtooltip.cpp index 9e6aaf4b95f..d989feb7f91 100644 --- a/src/widgets/kernel/qtooltip.cpp +++ b/src/widgets/kernel/qtooltip.cpp @@ -20,6 +20,8 @@  #if QT_CONFIG(style_stylesheet)  #include <private/qstylesheetstyle_p.h>  #endif +#include <qpa/qplatformwindow.h> +#include <qpa/qplatformwindow_p.h>  #include <qlabel.h>  #include <QtWidgets/private/qlabel_p.h> @@ -386,6 +388,17 @@ void QTipLabel::placeTip(const QPoint &pos, QWidget *w)          p += offset; +#if QT_CONFIG(wayland) +        create(); +        if (auto waylandWindow = dynamic_cast<QNativeInterface::Private::QWaylandWindow*>(windowHandle()->handle())) { +            // based on the existing code below, by default position at 'p' stored at the bottom right of our rect +            // then  flip to the other arbitrary 4x24 space if constrained +            const QRect controlGeometry(QRect(p.x() - 4, p.y() - 24, 4, 24)); +            waylandWindow->setParentControlGeometry(controlGeometry); +            waylandWindow->setExtendedWindowType(QNativeInterface::Private::QWaylandWindow::ToolTip); +        } +#endif +          QRect screenRect = screen->geometry();          if (p.x() + this->width() > screenRect.x() + screenRect.width())              p.rx() -= 4 + this->width(); | 
