wayland: Support affinities too

This commit is contained in:
Sergio Martins
2020-10-17 10:27:43 +01:00
parent b67bdf779e
commit de1e2d301f
2 changed files with 16 additions and 6 deletions

View File

@@ -59,7 +59,6 @@ WindowBeingDragged::WindowBeingDragged(FloatingWindow *fw, Draggable *draggable)
: m_floatingWindow(fw)
, m_draggable(bestDraggable(draggable))
, m_draggableWidget(m_draggable ? m_draggable->asWidget() : nullptr)
, m_affinities(fw->affinities())
{
init();
@@ -88,7 +87,6 @@ WindowBeingDragged::WindowBeingDragged(Draggable *draggable)
WindowBeingDragged::WindowBeingDragged(FloatingWindow *fw)
: m_floatingWindow(fw)
, m_draggable(nullptr)
, m_affinities(fw->affinities())
{
}
@@ -127,7 +125,8 @@ void WindowBeingDragged::grabMouse(bool grab)
QStringList WindowBeingDragged::affinities() const
{
return m_affinities;
return m_floatingWindow ? m_floatingWindow->affinities()
: QStringList();
}
QSize WindowBeingDragged::size() const
@@ -235,6 +234,18 @@ QPixmap WindowBeingDraggedWayland::pixmap() const
return pixmap;
}
QStringList WindowBeingDraggedWayland::affinities() const
{
if (m_floatingWindow)
return WindowBeingDragged::affinities();
else if (m_frame)
return m_frame->affinities();
else if (m_dockWidget)
return { m_dockWidget->affinities() };
return {};
}
QVector<DockWidgetBase *> WindowBeingDraggedWayland::dockWidgets() const
{
if (m_floatingWindow)

View File

@@ -46,7 +46,7 @@ public:
void grabMouse(bool grab);
///@brief returns the affinities of the window being dragged
QStringList affinities() const;
virtual QStringList affinities() const;
///@brief size of the window being dragged contents
virtual QSize size() const;
@@ -75,8 +75,6 @@ protected:
QPointer<FloatingWindow> m_floatingWindow;
Draggable *const m_draggable;
QPointer<QWidgetOrQuick> m_draggableWidget; // Just to have a QPointer on it
const QStringList m_affinities;
};
struct WindowBeingDraggedWayland : public WindowBeingDragged
@@ -89,6 +87,7 @@ public:
QSize minSize() const override;
QSize maxSize() const override;
QPixmap pixmap() const override;
QStringList affinities() const override;
QVector<DockWidgetBase*> dockWidgets() const override;
// These two are set for Wayland only, where we can't make the floating window immediately (no way to position it)