Introduce main window affinity

By default a dock widget can dock into any main window.
With affinities, we can now have a dock widget "belong" to a main window
and only be able to dock into it (or into other floating dock widgets
with the same affinity).

See DockWidgetBase::setAffinity() and MainWindowBase::setAffinity().
This commit is contained in:
Sergio Martins
2020-02-09 21:02:21 +00:00
parent 59bb0d8e71
commit d6997eaf7f
13 changed files with 234 additions and 10 deletions

View File

@@ -68,13 +68,18 @@ public:
bool checkSanity(MultiSplitterLayout::AnchorSanityOption o = MultiSplitterLayout::AnchorSanity_All);
bool contains(DockWidgetBase *) const;
QString affinityName() const;
private:
Q_DISABLE_COPY(DropArea)
friend class Frame;
friend class TestDocks;
friend class DropIndicatorOverlayInterface;
friend class AnimatedIndicators;
template <typename T>
bool validateAffinity(T *) const;
bool m_inDestructor = false;
QString m_affinityName;
DropIndicatorOverlayInterface *m_dropIndicatorOverlay = nullptr;
};
}