From 0131d673092ab18afd69fac84f4a17ad2ba615f2 Mon Sep 17 00:00:00 2001
From: Zhao Yuhang <2546789017@qq.com>
Date: 周六, 12 4月 2025 22:17:19 +0800
Subject: [PATCH] update qmsetup

---
 examples/shared/widgetframe/windowbar.cpp |   47 +++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/examples/shared/widgetframe/windowbar.cpp b/examples/shared/widgetframe/windowbar.cpp
index 51a2d3e..38a398e 100644
--- a/examples/shared/widgetframe/windowbar.cpp
+++ b/examples/shared/widgetframe/windowbar.cpp
@@ -1,7 +1,12 @@
+// Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware)
+// Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao)
+// SPDX-License-Identifier: Apache-2.0
+
 #include "windowbar.h"
 #include "windowbar_p.h"
 
 #include <QtCore/QDebug>
+#include <QtCore/QLocale>
 #include <QtGui/QtEvents>
 
 namespace QWK {
@@ -17,6 +22,10 @@
     void WindowBarPrivate::init() {
         Q_Q(WindowBar);
         layout = new QHBoxLayout();
+        if (QLocale::system().textDirection() == Qt::RightToLeft) {
+            layout->setDirection(QBoxLayout::RightToLeft);
+        }
+
         layout->setContentsMargins(QMargins());
         layout->setSpacing(0);
         for (int i = IconButton; i <= CloseButton; ++i) {
@@ -70,14 +79,19 @@
         return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::IconButton));
     }
 
+    QAbstractButton *WindowBar::pinButton() const {
+        Q_D(const WindowBar);
+        return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::PinButton));
+    }
+
     QAbstractButton *WindowBar::minButton() const {
         Q_D(const WindowBar);
-        return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::MinimumButton));
+        return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::MinimizeButton));
     }
 
     QAbstractButton *WindowBar::maxButton() const {
         Q_D(const WindowBar);
-        return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::MaximumButton));
+        return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::MaximizeButton));
     }
 
     QAbstractButton *WindowBar::closeButton() const {
@@ -122,6 +136,17 @@
         btn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
     }
 
+    void WindowBar::setPinButton(QAbstractButton *btn) {
+        Q_D(WindowBar);
+        auto org = takePinButton();
+        if (org)
+            org->deleteLater();
+        if (!btn)
+            return;
+        d->setWidgetAt(WindowBarPrivate::PinButton, btn);
+        connect(btn, &QAbstractButton::clicked, this, &WindowBar::pinRequested);
+    }
+
     void WindowBar::setMinButton(QAbstractButton *btn) {
         Q_D(WindowBar);
         auto org = takeMinButton();
@@ -129,7 +154,7 @@
             org->deleteLater();
         if (!btn)
             return;
-        d->setWidgetAt(WindowBarPrivate::MinimumButton, btn);
+        d->setWidgetAt(WindowBarPrivate::MinimizeButton, btn);
         connect(btn, &QAbstractButton::clicked, this, &WindowBar::minimizeRequested);
     }
 
@@ -140,7 +165,7 @@
             org->deleteLater();
         if (!btn)
             return;
-        d->setWidgetAt(WindowBarPrivate::MaximumButton, btn);
+        d->setWidgetAt(WindowBarPrivate::MaximizeButton, btn);
         connect(btn, &QAbstractButton::clicked, this, &WindowBar::maximizeRequested);
     }
 
@@ -170,9 +195,19 @@
         return static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::IconButton));
     }
 
+    QAbstractButton *WindowBar::takePinButton() {
+        Q_D(WindowBar);
+        auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::PinButton));
+        if (!btn) {
+            return nullptr;
+        }
+        disconnect(btn, &QAbstractButton::clicked, this, &WindowBar::pinRequested);
+        return btn;
+    }
+
     QAbstractButton *WindowBar::takeMinButton() {
         Q_D(WindowBar);
-        auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::MinimumButton));
+        auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::MinimizeButton));
         if (!btn) {
             return nullptr;
         }
@@ -182,7 +217,7 @@
 
     QAbstractButton *WindowBar::takeMaxButton() {
         Q_D(WindowBar);
-        auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::MaximumButton));
+        auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::MaximizeButton));
         if (!btn) {
             return nullptr;
         }

--
Gitblit v1.9.1