From d9164578a2fc4f0721aaf61c2af8bc6c5cdb11b4 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Sun, 15 Jun 2025 03:12:51 -0700 Subject: [PATCH] core/window: add title property to floating windows --- src/window/floatingwindow.cpp | 7 +++++++ src/window/floatingwindow.hpp | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/window/floatingwindow.cpp b/src/window/floatingwindow.cpp index 6a3a708f..2f196fc7 100644 --- a/src/window/floatingwindow.cpp +++ b/src/window/floatingwindow.cpp @@ -13,6 +13,7 @@ void ProxyFloatingWindow::connectWindow() { this->ProxyWindowBase::connectWindow(); + this->window->setTitle(this->bTitle); this->window->setMinimumSize(this->bMinimumSize); this->window->setMaximumSize(this->bMaximumSize); } @@ -29,6 +30,11 @@ void ProxyFloatingWindow::trySetHeight(qint32 implicitHeight) { } } +void ProxyFloatingWindow::onTitleChanged() { + if (this->window) this->window->setTitle(this->bTitle); + emit this->titleChanged(); +} + void ProxyFloatingWindow::onMinimumSizeChanged() { if (this->window) this->window->setMinimumSize(this->bMinimumSize); emit this->minimumSizeChanged(); @@ -59,6 +65,7 @@ FloatingWindowInterface::FloatingWindowInterface(QObject* parent) QObject::connect(this->window, &ProxyWindowBase::maskChanged, this, &FloatingWindowInterface::maskChanged); QObject::connect(this->window, &ProxyWindowBase::surfaceFormatChanged, this, &FloatingWindowInterface::surfaceFormatChanged); + QObject::connect(this->window, &ProxyFloatingWindow::titleChanged, this, &FloatingWindowInterface::titleChanged); QObject::connect(this->window, &ProxyFloatingWindow::minimumSizeChanged, this, &FloatingWindowInterface::minimumSizeChanged); QObject::connect(this->window, &ProxyFloatingWindow::maximumSizeChanged, this, &FloatingWindowInterface::maximumSizeChanged); // clang-format on diff --git a/src/window/floatingwindow.hpp b/src/window/floatingwindow.hpp index a175a1ad..a98e9f4b 100644 --- a/src/window/floatingwindow.hpp +++ b/src/window/floatingwindow.hpp @@ -24,12 +24,21 @@ public: signals: void minimumSizeChanged(); void maximumSizeChanged(); + void titleChanged(); private: void onMinimumSizeChanged(); void onMaximumSizeChanged(); + void onTitleChanged(); public: + Q_OBJECT_BINDABLE_PROPERTY( + ProxyFloatingWindow, + QString, + bTitle, + &ProxyFloatingWindow::onTitleChanged + ); + Q_OBJECT_BINDABLE_PROPERTY( ProxyFloatingWindow, QSize, @@ -49,6 +58,8 @@ public: class FloatingWindowInterface: public WindowInterface { Q_OBJECT; // clang-format off + /// Window title. + Q_PROPERTY(QString title READ default WRITE default NOTIFY titleChanged BINDABLE bindableTitle); /// Minimum window size given to the window system. Q_PROPERTY(QSize minimumSize READ default WRITE default NOTIFY minimumSizeChanged BINDABLE bindableMinimumSize); /// Maximum window size given to the window system. @@ -100,10 +111,12 @@ public: QBindable bindableMinimumSize() { return &this->window->bMinimumSize; } QBindable bindableMaximumSize() { return &this->window->bMaximumSize; } + QBindable bindableTitle() { return &this->window->bTitle; } signals: void minimumSizeChanged(); void maximumSizeChanged(); + void titleChanged(); private: ProxyFloatingWindow* window;