Use a non grabbing zxdg_popup_v6 for tooltips
Change-Id: I9de16c48a1dee7728fb02faa590c112bd656aa09 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
This commit is contained in:
parent
8618b4227f
commit
7a41c0171c
@ -163,8 +163,8 @@ void QWaylandXdgSurfaceV6::setAppId(const QString &appId)
|
|||||||
|
|
||||||
void QWaylandXdgSurfaceV6::setType(Qt::WindowType type, QWaylandWindow *transientParent)
|
void QWaylandXdgSurfaceV6::setType(Qt::WindowType type, QWaylandWindow *transientParent)
|
||||||
{
|
{
|
||||||
if (type == Qt::Popup && transientParent) {
|
if ((type == Qt::Popup || type == Qt::ToolTip) && transientParent) {
|
||||||
setPopup(transientParent, m_window->display()->lastInputDevice(), m_window->display()->lastInputSerial());
|
setPopup(transientParent, m_window->display()->lastInputDevice(), m_window->display()->lastInputSerial(), type == Qt::Popup);
|
||||||
} else {
|
} else {
|
||||||
setToplevel();
|
setToplevel();
|
||||||
if (transientParent) {
|
if (transientParent) {
|
||||||
@ -189,7 +189,7 @@ void QWaylandXdgSurfaceV6::setToplevel()
|
|||||||
m_toplevel = new Toplevel(this);
|
m_toplevel = new Toplevel(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QWaylandXdgSurfaceV6::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial)
|
void QWaylandXdgSurfaceV6::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial, bool grab)
|
||||||
{
|
{
|
||||||
Q_ASSERT(!m_toplevel && !m_popup);
|
Q_ASSERT(!m_toplevel && !m_popup);
|
||||||
|
|
||||||
@ -209,7 +209,9 @@ void QWaylandXdgSurfaceV6::setPopup(QWaylandWindow *parent, QWaylandInputDevice
|
|||||||
m_popup = new Popup(this, parentXdgSurface, positioner);
|
m_popup = new Popup(this, parentXdgSurface, positioner);
|
||||||
positioner->destroy();
|
positioner->destroy();
|
||||||
delete positioner;
|
delete positioner;
|
||||||
m_popup->grab(device->wl_seat(), serial);
|
if (grab) {
|
||||||
|
m_popup->grab(device->wl_seat(), serial);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QWaylandXdgSurfaceV6::zxdg_surface_v6_configure(uint32_t serial)
|
void QWaylandXdgSurfaceV6::zxdg_surface_v6_configure(uint32_t serial)
|
||||||
|
@ -121,7 +121,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
void setToplevel();
|
void setToplevel();
|
||||||
void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial);
|
void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial, bool grab);
|
||||||
|
|
||||||
QWaylandXdgShellV6 *m_shell;
|
QWaylandXdgShellV6 *m_shell;
|
||||||
QWaylandWindow *m_window;
|
QWaylandWindow *m_window;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user