From 9550c8614691ccdc1bf2fbb915576d1d7d40d86d Mon Sep 17 00:00:00 2001 From: Andrei-Fabian-Pop Date: Tue, 21 Jan 2025 18:14:20 +0200 Subject: [PATCH] gui/docking: Fix mingw compilation error Signed-off-by: Andrei-Fabian-Pop --- gui/include/gui/docking/docksettings.h | 25 +++---------- gui/src/docking/docksettings.cpp | 52 ++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 20 deletions(-) create mode 100644 gui/src/docking/docksettings.cpp diff --git a/gui/include/gui/docking/docksettings.h b/gui/include/gui/docking/docksettings.h index ee7225474..5d66858e3 100644 --- a/gui/include/gui/docking/docksettings.h +++ b/gui/include/gui/docking/docksettings.h @@ -27,8 +27,6 @@ static void initDockWidgets() {} } // namespace scopy #else #include "scopy-gui_export.h" -#include "style.h" -#include "style_attributes.h" #include #include @@ -47,18 +45,9 @@ namespace scopy { class SCOPY_GUI_EXPORT NoCloseTitleBar : public KDDockWidgets::QtWidgets::TitleBar { public: - explicit NoCloseTitleBar(KDDockWidgets::Core::TitleBar *controller, KDDockWidgets::Core::View *parent = nullptr) - : KDDockWidgets::QtWidgets::TitleBar(controller, parent) - , m_controller(controller) - { - Style::setBackgroundColor(this, json::theme::background_subtle, true); - } - - void init() override - { - m_controller->setHideDisabledButtons(KDDockWidgets::TitleBarButtonType::Close); - KDDockWidgets::QtWidgets::TitleBar::init(); - } + explicit NoCloseTitleBar(KDDockWidgets::Core::TitleBar *controller, + KDDockWidgets::Core::View *parent = nullptr); + void init() override; private: KDDockWidgets::Core::TitleBar *const m_controller; @@ -67,13 +56,9 @@ class SCOPY_GUI_EXPORT NoCloseTitleBar : public KDDockWidgets::QtWidgets::TitleB class SCOPY_GUI_EXPORT TitleBarFactory : public KDDockWidgets::QtWidgets::ViewFactory { public: - TitleBarFactory() = default; - + explicit TitleBarFactory(); KDDockWidgets::Core::View *createTitleBar(KDDockWidgets::Core::TitleBar *controller, - KDDockWidgets::Core::View *parent) const override - { - return new NoCloseTitleBar(controller, parent); - } + KDDockWidgets::Core::View *parent) const override; }; // Mark as static or inline to avoid ODR violation, this should only be used once in main.cpp anyway diff --git a/gui/src/docking/docksettings.cpp b/gui/src/docking/docksettings.cpp new file mode 100644 index 000000000..32a77b39a --- /dev/null +++ b/gui/src/docking/docksettings.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024 Analog Devices Inc. + * + * This file is part of Scopy + * (see https://www.github.com/analogdevicesinc/scopy). + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "docking/docksettings.h" + +#ifdef USE_KDDOCKWIDGETS +#include "style.h" + +using namespace scopy; + +NoCloseTitleBar::NoCloseTitleBar(KDDockWidgets::Core::TitleBar *controller, KDDockWidgets::Core::View *parent) + : KDDockWidgets::QtWidgets::TitleBar(controller, parent) + , m_controller(controller) +{ + Style::setBackgroundColor(this, json::theme::background_subtle, true); +} + +void NoCloseTitleBar::init() +{ + m_controller->setHideDisabledButtons(KDDockWidgets::TitleBarButtonType::Close); + KDDockWidgets::QtWidgets::TitleBar::init(); +} + +TitleBarFactory::TitleBarFactory() + : KDDockWidgets::QtWidgets::ViewFactory() +{ + setObjectName("TitleBarFactory"); +} + +KDDockWidgets::Core::View *TitleBarFactory::createTitleBar(KDDockWidgets::Core::TitleBar *controller, + KDDockWidgets::Core::View *parent) const +{ + return new NoCloseTitleBar(controller, parent); +} +#endif // USE_KDDOCKWIDGETS