From a0d05b4e2b0568bfcf7074f22febce34d736c7dd Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Mon, 7 Oct 2019 13:43:48 +0100 Subject: [PATCH] Move Frame::Options enum to KDDockWidgets.h So we can forward declare Frame and not include private headers in FrameworkWidgetFactory.h --- src/DropAreaWithCentralFrame.cpp | 2 +- src/Frame.cpp | 10 +++++----- src/Frame_p.h | 17 +++++------------ src/FrameworkWidgetFactory.cpp | 2 +- src/FrameworkWidgetFactory.h | 6 +++--- src/KDDockWidgets.h | 8 ++++++++ src/widgets/FrameWidget.cpp | 2 +- src/widgets/FrameWidget_p.h | 2 +- tests/tst_docks.cpp | 4 ++-- 9 files changed, 27 insertions(+), 26 deletions(-) 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()); }