diff --git a/src/controllers/MainWindow.cpp b/src/controllers/MainWindow.cpp index 2ba368cc..678a22f3 100644 --- a/src/controllers/MainWindow.cpp +++ b/src/controllers/MainWindow.cpp @@ -39,7 +39,6 @@ #include "DockWidgetQuick.h" #else // TODO: Use framework factory instead -#include "views_qtwidgets/DockWidget_qtwidgets.h" #include "views_qtwidgets/MainWindow_qtwidgets.h" #endif diff --git a/src/controllers/TitleBar.cpp b/src/controllers/TitleBar.cpp index 0b87900c..ada22583 100644 --- a/src/controllers/TitleBar.cpp +++ b/src/controllers/TitleBar.cpp @@ -13,12 +13,11 @@ #include "Config.h" #include "FrameworkWidgetFactory.h" #include "View.h" -#include "views_qtwidgets/View_qtwidgets.h" -#include "views_qtwidgets/TitleBar_qtwidgets.h" #include "private/WindowBeingDragged_p.h" #include "private/Utils_p.h" #include "private/Logging_p.h" +#include "views/TitleBar.h" #include "controllers/FloatingWindow.h" #include "controllers/TabBar.h" #include "controllers/MainWindow.h" @@ -54,7 +53,9 @@ TitleBar::TitleBar(FloatingWindow *parent) { init(); connect(m_floatingWindow, &FloatingWindow::numFramesChanged, this, &TitleBar::updateButtons); - connect(m_floatingWindow, &FloatingWindow::windowStateChanged, static_cast(view()), &Views::TitleBar_qtwidgets::updateMaximizeButton); // TODO + connect(m_floatingWindow, &FloatingWindow::windowStateChanged, this, [this] { + dynamic_cast(view())->updateMaximizeButton(); + }); connect(m_floatingWindow, &FloatingWindow::activatedChanged, this, &TitleBar::isFocusedChanged); } diff --git a/src/views/TitleBar.h b/src/views/TitleBar.h new file mode 100644 index 00000000..95402018 --- /dev/null +++ b/src/views/TitleBar.h @@ -0,0 +1,29 @@ +/* + This file is part of KDDockWidgets. + + SPDX-FileCopyrightText: 2020-2022 Klarälvdalens Datakonsult AB, a KDAB Group company + Author: Sérgio Martins + + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only + + Contact KDAB at for commercial licensing options. +*/ + +#pragma once + + +namespace KDDockWidgets { + +namespace Views { + + +/// Brief The interface that title bar views should implement +class TitleBar +{ +public: + virtual void updateMaximizeButton() = 0; +}; + +} + +} diff --git a/src/views_qtwidgets/TitleBar_qtwidgets.h b/src/views_qtwidgets/TitleBar_qtwidgets.h index 5ab4888b..9615b726 100644 --- a/src/views_qtwidgets/TitleBar_qtwidgets.h +++ b/src/views_qtwidgets/TitleBar_qtwidgets.h @@ -13,6 +13,7 @@ #include "View_qtwidgets.h" #include "controllers/FloatingWindow.h" +#include "views/TitleBar.h" #include @@ -25,14 +26,14 @@ class TitleBar; namespace KDDockWidgets::Views { -class DOCKS_EXPORT TitleBar_qtwidgets : public View_qtwidgets +class DOCKS_EXPORT TitleBar_qtwidgets : public View_qtwidgets, public Views::TitleBar { Q_OBJECT public: explicit TitleBar_qtwidgets(Controllers::TitleBar *controller, QWidget *parent = nullptr); // TODO: - void updateMaximizeButton(); + void updateMaximizeButton() override; void updateMinimizeButton(); void updateAutoHideButton();