diff --git a/Changelog b/Changelog index da2a56e1b..6d4518604 100644 --- a/Changelog +++ b/Changelog @@ -1,11 +1,13 @@ * v1.1.0 (unreleased) - New drop indicator style type: Segmented Indicators + - Added AutoHide / SideBar support - Added FocusScope support - Added DockWidget::isFocused() and DockWidgetBase::isFocusedChanged() - Added Config::Flag_AlwaysTitleBarWhenFloating, which complements Flag_HideTitleBarWhenTabsVisible - Added Config::Flag_DontUseUtilityWindowsForFloating - Added Config::Flag_TitleBarHasMinimizeButton - Added Config::Flag_TitleBarNoFloatButton + - Added Config::Flag_AutoHideSupport - Bugfixes: - Windows: Fixed windows not having proper minimum size. - Windows: Fixed moving windows across screens with different DPI (#72) diff --git a/examples/dockwidgets/main.cpp b/examples/dockwidgets/main.cpp index 3f5d0d819..bf53d75ff 100644 --- a/examples/dockwidgets/main.cpp +++ b/examples/dockwidgets/main.cpp @@ -102,6 +102,9 @@ int main(int argc, char **argv) QCommandLineOption centralFrame("f", QCoreApplication::translate("main", "Persistent central frame")); + QCommandLineOption autoHideSupport("w", QCoreApplication::translate("main", "Enables auto-hide/minimization to side-bar support")); + parser.addOption(autoHideSupport); + #if defined(DOCKS_DEVELOPER_MODE) parser.addOption(centralFrame); @@ -110,9 +113,6 @@ int main(int argc, char **argv) parser.addOption(noQtTool); parser.addOption(noParentForFloating); - QCommandLineOption autoHideSupport("w", QCoreApplication::translate("main", "Enables auto-hide/minimization to side-bar support")); - parser.addOption(autoHideSupport); - # if defined(Q_OS_WIN) QCommandLineOption noAeroSnap("no-aero-snap", QCoreApplication::translate("main", "(internal) Disable AeroSnap")); parser.addOption(noAeroSnap); @@ -145,9 +145,6 @@ int main(int argc, char **argv) if (parser.isSet(noParentForFloating)) flags |= KDDockWidgets::Config::Flag_internal_DontUseParentForFloatingWindows; - if (parser.isSet(autoHideSupport)) - flags |= Config::Flag_internal_AutoHideSupport; - # if defined(Q_OS_WIN) if (parser.isSet(noAeroSnap)) flags &= ~KDDockWidgets::Config::Flag_AeroSnapWithClientDecos; @@ -155,6 +152,9 @@ int main(int argc, char **argv) #endif + if (parser.isSet(autoHideSupport)) + flags |= Config::Flag_AutoHideSupport; + if (parser.isSet(noTitleBars)) flags |= KDDockWidgets::Config::Flag_HideTitleBarWhenTabsVisible; diff --git a/src/Config.h b/src/Config.h index 05bcf8058..11fa26def 100644 --- a/src/Config.h +++ b/src/Config.h @@ -73,9 +73,8 @@ class DOCKS_EXPORT Config Flag_DontUseUtilityFloatingWindows = Flag_internal_DontUseQtToolWindowsForFloatingWindows | Flag_internal_DontUseParentForFloatingWindows, Flag_TitleBarHasMinimizeButton = 0x2000 | Flag_DontUseUtilityFloatingWindows, ///> The title bar will have a minimize button when floating. This implies Flag_DontUseUtilityFloatingWindows too, otherwise they wouldn't appear in the task bar. Flag_TitleBarNoFloatButton = 0x4000, ///> The TitleBar won't show the float button - Flag_internal_AutoHideSupport = 0x8000 | Flag_TitleBarNoFloatButton, ///> Supports minimizing dock widgets to the side-bar. - ///>By default it also turns off the float button, but you can remove Flag_TitleBarNoFloatButton to have both. - ///>Internal for now. Will be public once the feature is finished. + Flag_AutoHideSupport = 0x8000 | Flag_TitleBarNoFloatButton, ///> Supports minimizing dock widgets to the side-bar. + ///> By default it also turns off the float button, but you can remove Flag_TitleBarNoFloatButton to have both. Flag_Default = Flag_AeroSnapWithClientDecos ///> The defaults }; Q_DECLARE_FLAGS(Flags, Flag) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 01971cd7e..fbf06373b 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -36,7 +36,7 @@ class MainWindow::Private public: explicit Private(MainWindowOptions, MainWindowBase *mainWindow) - : m_supportsAutoHide(Config::self().flags() & Config::Flag_internal_AutoHideSupport) + : m_supportsAutoHide(Config::self().flags() & Config::Flag_AutoHideSupport) { if (m_supportsAutoHide) { for (auto location : { SideBarLocation::North, SideBarLocation::East, diff --git a/src/private/DockRegistry.cpp b/src/private/DockRegistry.cpp index 729c7d981..40915ec0a 100644 --- a/src/private/DockRegistry.cpp +++ b/src/private/DockRegistry.cpp @@ -561,7 +561,7 @@ bool DockRegistry::eventFilter(QObject *watched, QEvent *event) } } } else if (event->type() == QEvent::MouseButtonPress) { - if (!(Config::self().flags() & Config::Flag_internal_AutoHideSupport)) + if (!(Config::self().flags() & Config::Flag_AutoHideSupport)) return false; auto p = watched; diff --git a/src/private/TitleBar.cpp b/src/private/TitleBar.cpp index 23e701506..756bc2196 100644 --- a/src/private/TitleBar.cpp +++ b/src/private/TitleBar.cpp @@ -29,7 +29,7 @@ TitleBar::TitleBar(Frame *parent) , Draggable(this) , m_frame(parent) , m_floatingWindow(nullptr) - , m_supportsAutoHide(Config::self().flags() & Config::Flag_internal_AutoHideSupport) + , m_supportsAutoHide(Config::self().flags() & Config::Flag_AutoHideSupport) { connect(m_frame, &Frame::numDockWidgetsChanged, this, &TitleBar::updateCloseButton); connect(m_frame, &Frame::isFocusedChanged, this, &TitleBar::isFocusedChanged); @@ -49,7 +49,7 @@ TitleBar::TitleBar(FloatingWindow *parent) , Draggable(this) , m_frame(nullptr) , m_floatingWindow(parent) - , m_supportsAutoHide(Config::self().flags() & Config::Flag_internal_AutoHideSupport) + , m_supportsAutoHide(Config::self().flags() & Config::Flag_AutoHideSupport) { connect(m_floatingWindow, &FloatingWindow::numFramesChanged, this, &TitleBar::updateCloseButton); connect(m_floatingWindow, &FloatingWindow::numFramesChanged, this, &TitleBar::updateFloatButton); diff --git a/src/private/widgets/TitleBarWidget.cpp b/src/private/widgets/TitleBarWidget.cpp index 1d0fe1002..846d5a9b2 100644 --- a/src/private/widgets/TitleBarWidget.cpp +++ b/src/private/widgets/TitleBarWidget.cpp @@ -168,7 +168,7 @@ void TitleBarWidget::updateMinimizeButton() void TitleBarWidget::updateAutoHideButton() { - if (Config::self().flags() & Config::Flag_internal_AutoHideSupport) { + if (Config::self().flags() & Config::Flag_AutoHideSupport) { if (const Frame *f = frame()) { if (f->isInMainWindow()) { m_autoHideButton->setIcon(QIcon(QStringLiteral(":/img/auto-hide.png"))); diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index 941dbce1e..317d82dbc 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -5954,7 +5954,7 @@ void TestDocks::tst_honourUserGeometry() void TestDocks::tst_closeRemovesFromSideBar() { EnsureTopLevelsDeleted e; - Config::self().setFlags(Config::Flag_internal_AutoHideSupport); + Config::self().setFlags(Config::Flag_AutoHideSupport); auto m1 = createMainWindow(QSize(1000, 1000), MainWindowOption_None); auto dw1 = new DockWidget(QStringLiteral("1")); auto fw1 = dw1->window();