Introduce DockWidgetBase::LayoutSaverOptions enum

The first enumerator is "Skip", meaning the dock widget won't
be affected by save/restore. It won't disappear while restoring,
and won't be shown if already hidden. (only applies to floating widgets)
This commit is contained in:
Sergio Martins
2021-01-11 22:42:23 +00:00
parent 7698584ee0
commit e0e6f55868
13 changed files with 167 additions and 47 deletions

View File

@@ -40,11 +40,13 @@ using namespace KDDockWidgets;
class DockWidgetBase::Private
{
public:
Private(const QString &dockName, DockWidgetBase::Options options_, DockWidgetBase *qq)
Private(const QString &dockName, DockWidgetBase::Options options_,
LayoutSaverOptions layoutSaverOptions_, DockWidgetBase *qq)
: name(dockName)
, title(dockName)
, q(qq)
, options(options_)
, layoutSaverOptions(layoutSaverOptions_)
, toggleAction(new QAction(q))
, floatAction(new QAction(q))
{
@@ -126,6 +128,7 @@ public:
QWidgetOrQuick *widget = nullptr;
DockWidgetBase *const q;
DockWidgetBase::Options options;
const LayoutSaverOptions layoutSaverOptions;
QAction *const toggleAction;
QAction *const floatAction;
LastPositions m_lastPositions;
@@ -135,9 +138,10 @@ public:
QSize m_lastOverlayedSize = QSize(0, 0);
};
DockWidgetBase::DockWidgetBase(const QString &name, Options options)
DockWidgetBase::DockWidgetBase(const QString &name, Options options,
LayoutSaverOptions layoutSaverOptions)
: QWidgetAdapter(nullptr, Qt::Tool)
, d(new Private(name, options, this))
, d(new Private(name, options, layoutSaverOptions, this))
{
d->init();
DockRegistry::self()->registerDockWidget(this);
@@ -343,6 +347,11 @@ DockWidgetBase::Options DockWidgetBase::options() const
return d->options;
}
DockWidgetBase::LayoutSaverOptions DockWidgetBase::layoutSaverOptions() const
{
return d->layoutSaverOptions;
}
void DockWidgetBase::setOptions(Options options)
{
if ((d->options & Option_NotDockable) != (options & Option_NotDockable)) {