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:
Giulio Camuffo 2017-07-03 08:19:58 +02:00
parent 8618b4227f
commit 7a41c0171c
2 changed files with 7 additions and 5 deletions

View File

@ -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)

View File

@ -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;