diff --git a/src/DropAreaWithCentralFrame.cpp b/src/DropAreaWithCentralFrame.cpp
index 1244b31a..17cf8e8a 100644
--- a/src/DropAreaWithCentralFrame.cpp
+++ b/src/DropAreaWithCentralFrame.cpp
@@ -38,6 +38,6 @@ DropAreaWithCentralFrame::~DropAreaWithCentralFrame()
Frame* DropAreaWithCentralFrame::createCentralFrame(MainWindowOptions options)
{
- return (options & MainWindowOption_HasCentralFrame) ? Config::self().frameworkWidgetFactory()->createFrame(nullptr, Frame::Option_IsCentralFrame | Frame::Option_AlwaysShowsTabs)
+ return (options & MainWindowOption_HasCentralFrame) ? Config::self().frameworkWidgetFactory()->createFrame(nullptr, FrameOptions() | FrameOption_IsCentralFrame | FrameOption_AlwaysShowsTabs)
: nullptr;
}
diff --git a/src/Frame.cpp b/src/Frame.cpp
index c73094b9..dc5f9ebf 100644
--- a/src/Frame.cpp
+++ b/src/Frame.cpp
@@ -47,16 +47,16 @@ static int s_dbg_numFrames = 0;
using namespace KDDockWidgets;
namespace KDDockWidgets {
-static Frame::Options actualOptions(Frame::Options options)
+static FrameOptions actualOptions(FrameOptions options)
{
if (Config::self().flags() & Config::Flag_AlwaysShowTabs)
- options |= Frame::Option_AlwaysShowsTabs;
+ options |= FrameOption_AlwaysShowsTabs;
return options;
}
}
-Frame::Frame(QWidgetOrQuick *parent, Options options)
+Frame::Frame(QWidgetOrQuick *parent, FrameOptions options)
: QWidgetAdapter(parent)
, m_tabWidget(Config::self().frameworkWidgetFactory()->createTabWidget(this))
, m_titleBar(Config::self().frameworkWidgetFactory()->createTitleBar(this))
@@ -165,7 +165,7 @@ void Frame::onDockWidgetCountChanged()
updateTitleBarVisibility();
// We don't really keep track of the state, so emit even if the visibility didn't change. No biggie.
- if (!(m_options & Option_AlwaysShowsTabs))
+ if (!(m_options & FrameOption_AlwaysShowsTabs))
Q_EMIT hasTabsVisibleChanged();
}
@@ -466,7 +466,7 @@ bool Frame::event(QEvent *e)
Frame *Frame::deserialize(const LayoutSaver::Frame &f)
{
- auto frame = Config::self().frameworkWidgetFactory()->createFrame(/*parent=*/nullptr, Frame::Options(f.options));
+ auto frame = Config::self().frameworkWidgetFactory()->createFrame(/*parent=*/nullptr, FrameOptions(f.options));
frame->setObjectName(f.objectName);
for (const auto &savedDock : qAsConst(f.dockWidgets)) {
diff --git a/src/Frame_p.h b/src/Frame_p.h
index 3d868add..56834c69 100644
--- a/src/Frame_p.h
+++ b/src/Frame_p.h
@@ -63,15 +63,8 @@ class DOCKS_EXPORT Frame : public QWidgetAdapter
Q_PROPERTY(KDDockWidgets::TitleBar* titleBar READ titleBar CONSTANT)
public:
typedef QList List;
- typedef int Options;
- enum Option {
- Option_None = 0,
- Option_AlwaysShowsTabs = 1,
- Option_IsCentralFrame = 2
- };
- Q_ENUM(Option)
- explicit Frame(QWidgetOrQuick *parent = nullptr, Options = Option_None);
+ explicit Frame(QWidgetOrQuick *parent = nullptr, FrameOptions = FrameOption_None);
~Frame() override;
static Frame *deserialize(const LayoutSaver::Frame &);
@@ -130,7 +123,7 @@ public:
*
* @return whether this widget is the central frame in a main window
*/
- bool isCentralFrame() const { return m_options & Option_IsCentralFrame; }
+ bool isCentralFrame() const { return m_options & FrameOption_IsCentralFrame; }
/**
* @brief whether the tab widget will always show tabs, even if there's only 1 dock widget
@@ -141,7 +134,7 @@ public:
*
* @return whether the tab widget will always show tabs, even if there's only 1 dock widget
*/
- bool alwaysShowsTabs() const { return m_options & Option_AlwaysShowsTabs; }
+ bool alwaysShowsTabs() const { return m_options & FrameOption_AlwaysShowsTabs; }
/// @brief returns the number of dock widgets inside the frame
@@ -169,7 +162,7 @@ public:
DockWidgetBase *currentDockWidget() const;
- Options options() const { return m_options; }
+ FrameOptions options() const { return m_options; }
bool anyNonClosable() const;
@@ -226,7 +219,7 @@ private:
TabWidget *const m_tabWidget;
TitleBar *const m_titleBar;
DropArea *m_dropArea = nullptr;
- const Options m_options;
+ const FrameOptions m_options;
QPointer- m_layoutItem;
bool m_beingDeleted = false;
};
diff --git a/src/FrameworkWidgetFactory.cpp b/src/FrameworkWidgetFactory.cpp
index 69325ed6..b46037fa 100644
--- a/src/FrameworkWidgetFactory.cpp
+++ b/src/FrameworkWidgetFactory.cpp
@@ -51,7 +51,7 @@ FrameworkWidgetFactory::~FrameworkWidgetFactory()
}
#ifdef KDDOCKWIDGETS_QTWIDGETS
-Frame *DefaultWidgetFactory::createFrame(QWidgetOrQuick *parent, Frame::Options options) const
+Frame *DefaultWidgetFactory::createFrame(QWidgetOrQuick *parent, FrameOptions options) const
{
return new FrameWidget(parent, options);
}
diff --git a/src/FrameworkWidgetFactory.h b/src/FrameworkWidgetFactory.h
index 13e5e971..b9d5a43e 100644
--- a/src/FrameworkWidgetFactory.h
+++ b/src/FrameworkWidgetFactory.h
@@ -22,8 +22,8 @@
#define KDDOCKWIDGETS_FRAMEWORKWIDGETFACTORY_H
#include "docks_export.h"
+#include "KDDockWidgets.h"
#include "QWidgetAdapter.h"
-#include "Frame_p.h"
/**
* @file
@@ -73,7 +73,7 @@ public:
/// DockWidgets.
///@param parent just forward to Frame's constructor
///@param options just forward to Frame's constructor
- virtual Frame* createFrame(QWidgetOrQuick *parent = nullptr, Frame::Options = Frame::Option_None) const = 0;
+ virtual Frame* createFrame(QWidgetOrQuick *parent = nullptr, FrameOptions = FrameOption_None) const = 0;
///@brief Called internally by the framework to create a TitleBar
/// Override to provide your own TitleBar sub-class. If overridden then
@@ -129,7 +129,7 @@ public:
class DOCKS_EXPORT DefaultWidgetFactory : public FrameworkWidgetFactory
{
public:
- Frame *createFrame(QWidgetOrQuick *parent, Frame::Options) const override;
+ Frame *createFrame(QWidgetOrQuick *parent, FrameOptions) const override;
TitleBar *createTitleBar(Frame *) const override;
TitleBar *createTitleBar(FloatingWindow *) const override;
TabBar *createTabBar(TabWidget *parent) const override;
diff --git a/src/KDDockWidgets.h b/src/KDDockWidgets.h
index e3497411..2b247d82 100644
--- a/src/KDDockWidgets.h
+++ b/src/KDDockWidgets.h
@@ -51,6 +51,14 @@ namespace KDDockWidgets
AddingOption_StartHidden ///< Don't show the dock widget when adding it
};
+ ///@internal
+ enum FrameOption {
+ FrameOption_None = 0,
+ FrameOption_AlwaysShowsTabs = 1,
+ FrameOption_IsCentralFrame = 2
+ };
+ Q_DECLARE_FLAGS(FrameOptions, FrameOption)
+
///@internal
inline Location oppositeLocation(Location loc)
{
diff --git a/src/widgets/FrameWidget.cpp b/src/widgets/FrameWidget.cpp
index a59157bf..91c262b2 100644
--- a/src/widgets/FrameWidget.cpp
+++ b/src/widgets/FrameWidget.cpp
@@ -56,7 +56,7 @@ public:
VBoxLayout::~VBoxLayout() = default;
-FrameWidget::FrameWidget(QWidget *parent, Options options)
+FrameWidget::FrameWidget(QWidget *parent, FrameOptions options)
: Frame(parent, options)
{
auto vlayout = new VBoxLayout(this);
diff --git a/src/widgets/FrameWidget_p.h b/src/widgets/FrameWidget_p.h
index 45be2517..87ee071b 100644
--- a/src/widgets/FrameWidget_p.h
+++ b/src/widgets/FrameWidget_p.h
@@ -35,7 +35,7 @@ class DOCKS_EXPORT FrameWidget : public Frame
{
Q_OBJECT
public:
- explicit FrameWidget(QWidget *parent = nullptr, Options = Option_None);
+ explicit FrameWidget(QWidget *parent = nullptr, FrameOptions = FrameOption_None);
QTabBar *tabBar() const;
protected:
void paintEvent(QPaintEvent *) override;
diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp
index 5823841d..a3f40a9d 100644
--- a/tests/tst_docks.cpp
+++ b/tests/tst_docks.cpp
@@ -1433,7 +1433,7 @@ void TestDocks::tst_restoreCentralFrame()
QCOMPARE(layout->count(), 1);
Item *item = m->dropArea()->centralFrame();
QVERIFY(item);
- QCOMPARE(item->frame()->options(), Frame::Option_IsCentralFrame | Frame::Option_AlwaysShowsTabs);
+ QCOMPARE(item->frame()->options(), FrameOption_IsCentralFrame | FrameOption_AlwaysShowsTabs);
QVERIFY(!item->frame()->titleBar()->isVisible());
LayoutSaver saver;
@@ -1443,7 +1443,7 @@ void TestDocks::tst_restoreCentralFrame()
QCOMPARE(layout->count(), 1);
item = m->dropArea()->centralFrame();
QVERIFY(item);
- QCOMPARE(item->frame()->options(), Frame::Option_IsCentralFrame | Frame::Option_AlwaysShowsTabs);
+ QCOMPARE(item->frame()->options(), FrameOption_IsCentralFrame | FrameOption_AlwaysShowsTabs);
QVERIFY(!item->frame()->titleBar()->isVisible());
}