From 115e67edc441c258b10d419ec38fd4ea798edcb5 Mon Sep 17 00:00:00 2001 From: Jan Krassnigg Date: Wed, 13 May 2020 16:40:43 +0200 Subject: [PATCH] Moved private classes into dedicated header --- src/DockAreaTitleBar.cpp | 1 + src/DockAreaTitleBar.h | 51 ---------------------- src/DockAreaTitleBar_p.h | 93 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 51 deletions(-) create mode 100644 src/DockAreaTitleBar_p.h diff --git a/src/DockAreaTitleBar.cpp b/src/DockAreaTitleBar.cpp index 62e9877..aec4cc9 100644 --- a/src/DockAreaTitleBar.cpp +++ b/src/DockAreaTitleBar.cpp @@ -39,6 +39,7 @@ #include #include +#include "DockAreaTitleBar_p.h" #include "ads_globals.h" #include "FloatingDockContainer.h" #include "FloatingDragPreview.h" diff --git a/src/DockAreaTitleBar.h b/src/DockAreaTitleBar.h index 3efb8cc..2a4505f 100644 --- a/src/DockAreaTitleBar.h +++ b/src/DockAreaTitleBar.h @@ -31,7 +31,6 @@ // INCLUDES //============================================================================ #include -#include #include "ads_globals.h" @@ -157,56 +156,6 @@ signals: void tabBarClicked(int index); }; // class name -using tTitleBarButton = QToolButton; - - /** - * Title bar button of a dock area that customizes tTitleBarButton appearance/behaviour - * according to various config flags such as: - * CDockManager::DockAreaHas_xxx_Button - if set to 'false' keeps the button always invisible - * CDockManager::DockAreaHideDisabledButtons - if set to 'true' hides button when it is disabled - */ -class CTitleBarButton : public tTitleBarButton -{ - Q_OBJECT - - bool Visible = true; - bool HideWhenDisabled = false; - -public: - using Super = tTitleBarButton; - CTitleBarButton(bool visible = true, QWidget* parent = nullptr); - - /** - * Adjust this visibility change request with our internal settings: - */ - virtual void setVisible(bool visible) override; - -protected: - /** - * Handle EnabledChanged signal to set button invisible if the configured - */ - bool event(QEvent *ev) override; -}; - - -/** -* This spacer widget is here because of the following problem. -* The dock area title bar handles mouse dragging and moving the floating widget. -* The problem is, that if the title bar becomes invisible, i.e. if the dock -* area contains only one single dock widget and the dock area is moved -* into a floating widget, then mouse events are not handled anymore and dragging -* of the floating widget stops. -*/ -class CSpacerWidget : public QWidget -{ - Q_OBJECT -public: - using Super = QWidget; - CSpacerWidget(QWidget* Parent = 0); - virtual QSize sizeHint() const override {return QSize(0, 0);} - virtual QSize minimumSizeHint() const override {return QSize(0, 0);} -}; - } // namespace ads //----------------------------------------------------------------------------- diff --git a/src/DockAreaTitleBar_p.h b/src/DockAreaTitleBar_p.h new file mode 100644 index 0000000..c159de2 --- /dev/null +++ b/src/DockAreaTitleBar_p.h @@ -0,0 +1,93 @@ +#ifndef DockAreaTitleBarPH +#define DockAreaTitleBarPH +/******************************************************************************* +** Qt Advanced Docking System +** Copyright (C) 2017 Uwe Kindler +** +** This library is free software; you can redistribute it and/or +** modify it under the terms of the GNU Lesser General Public +** License as published by the Free Software Foundation; either +** version 2.1 of the License, or (at your option) any later version. +** +** This library is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Lesser General Public License for more details. +** +** You should have received a copy of the GNU Lesser General Public +** License along with this library; If not, see . +******************************************************************************/ + + +//============================================================================ +/// \file DockAreaTitleBar_p.h +/// \author Uwe Kindler +/// \date 12.10.2018 +/// \brief Declaration of classes CTitleBarButton and CSpacerWidget +//============================================================================ + + +//============================================================================ +// INCLUDES +//============================================================================ +#include +#include + +#include "ads_globals.h" + +namespace ads +{ +using tTitleBarButton = QToolButton; + + /** + * Title bar button of a dock area that customizes tTitleBarButton appearance/behaviour + * according to various config flags such as: + * CDockManager::DockAreaHas_xxx_Button - if set to 'false' keeps the button always invisible + * CDockManager::DockAreaHideDisabledButtons - if set to 'true' hides button when it is disabled + */ +class CTitleBarButton : public tTitleBarButton +{ + Q_OBJECT + + bool Visible = true; + bool HideWhenDisabled = false; + +public: + using Super = tTitleBarButton; + CTitleBarButton(bool visible = true, QWidget* parent = nullptr); + + /** + * Adjust this visibility change request with our internal settings: + */ + virtual void setVisible(bool visible) override; + +protected: + /** + * Handle EnabledChanged signal to set button invisible if the configured + */ + bool event(QEvent *ev) override; +}; + + +/** +* This spacer widget is here because of the following problem. +* The dock area title bar handles mouse dragging and moving the floating widget. +* The problem is, that if the title bar becomes invisible, i.e. if the dock +* area contains only one single dock widget and the dock area is moved +* into a floating widget, then mouse events are not handled anymore and dragging +* of the floating widget stops. +*/ +class CSpacerWidget : public QWidget +{ + Q_OBJECT +public: + using Super = QWidget; + CSpacerWidget(QWidget* Parent = 0); + virtual QSize sizeHint() const override {return QSize(0, 0);} + virtual QSize minimumSizeHint() const override {return QSize(0, 0);} +}; + +} + // namespace ads +//----------------------------------------------------------------------------- +#endif // DockAreaTitleBarPH