Yuhang Zhao
2023-12-06 05fedeedb28df769ce16efea39be1cc5e2916b98
minor tweaks
7个文件已修改
127 ■■■■■ 已修改文件
examples/mainwindow/mainwindow.cpp 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/contexts/abstractwindowcontext.cpp 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/contexts/abstractwindowcontext_p.h 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/quickwindowagent.cpp 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/quick/quickwindowagent.h 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/widgets/widgetwindowagent.cpp 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/widgets/widgetwindowagent.h 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
examples/mainwindow/mainwindow.cpp
@@ -53,16 +53,41 @@
        return menuBar;
    }();
    static const auto buttonStyleSheet = QLatin1String{ "QPushButton{color:black;};QPushButton:hover{background-color:black;color:white;}" };
    static const auto buttonStyleSheet = QLatin1String{ R"(
QPushButton {
    background-color:white;
    color:black;
}
QPushButton:hover {
    background-color:black;
    color:white;
}
QPushButton:pressed {
    background-color:red;
    color:white;
}
)" };
    auto iconButton = new QPushButton("I");
    iconButton->setFlat(true);
    iconButton->setAttribute(Qt::WA_Hover);
    iconButton->setMouseTracking(true);
    iconButton->setStyleSheet(buttonStyleSheet);
    auto minButton = new QPushButton("—");
    minButton->setFlat(true);
    minButton->setAttribute(Qt::WA_Hover);
    minButton->setMouseTracking(true);
    minButton->setStyleSheet(buttonStyleSheet);
    auto maxButton = new QPushButton("🗖");
    maxButton->setStyleSheet(buttonStyleSheet);
    maxButton->setCheckable(true);
    maxButton->setFlat(true);
    maxButton->setAttribute(Qt::WA_Hover);
    maxButton->setMouseTracking(true);
    maxButton->setStyleSheet(buttonStyleSheet);
    auto closeButton = new QPushButton("✖");
    closeButton->setFlat(true);
    closeButton->setAttribute(Qt::WA_Hover);
    closeButton->setMouseTracking(true);
    closeButton->setStyleSheet(buttonStyleSheet);
    auto windowBar = new QWK::WindowBar();
@@ -97,5 +122,5 @@
    setMenuWidget(windowBar);
    setCentralWidget(clockWidget);
    setWindowTitle("Example MainWindow");
    resize(1024, 768);
    resize(640, 480);
}
src/core/contexts/abstractwindowcontext.cpp
@@ -8,7 +8,7 @@
    AbstractWindowContext::~AbstractWindowContext() = default;
    bool AbstractWindowContext::setHitTestVisible(QObject *obj, bool visible) {
    bool AbstractWindowContext::setHitTestVisible(const QObject *obj, bool visible) {
        Q_ASSERT(obj);
        if (!obj) {
            return false;
@@ -38,7 +38,7 @@
    }
    bool AbstractWindowContext::setSystemButton(CoreWindowAgent::SystemButton button,
                                                QObject *obj) {
                                                const QObject *obj) {
        Q_ASSERT(obj);
        Q_ASSERT(button != CoreWindowAgent::Unknown);
        if (!obj || (button == CoreWindowAgent::Unknown)) {
@@ -52,7 +52,7 @@
        return true;
    }
    bool AbstractWindowContext::setTitleBar(QObject *item) {
    bool AbstractWindowContext::setTitleBar(const QObject *item) {
        Q_ASSERT(item);
        if (!item) {
            return false;
@@ -90,7 +90,7 @@
                continue;
            }
            if (m_delegate->mapGeometryToScene(currentButton).contains(pos)) {
                *button = CoreWindowAgent::WindowIcon;
                *button = static_cast<CoreWindowAgent::SystemButton>(i);
                return true;
            }
        }
src/core/contexts/abstractwindowcontext_p.h
@@ -25,15 +25,15 @@
        inline QObject *host() const;
        inline QWindow *window() const;
        inline bool isHitTestVisible(QObject *obj) const;
        bool setHitTestVisible(QObject *obj, bool visible);
        inline bool isHitTestVisible(const QObject *obj) const;
        bool setHitTestVisible(const QObject *obj, bool visible);
        bool setHitTestVisible(const QRect &rect, bool visible);
        inline QObject *systemButton(CoreWindowAgent::SystemButton button) const;
        bool setSystemButton(CoreWindowAgent::SystemButton button, QObject *obj);
        inline const QObject *systemButton(CoreWindowAgent::SystemButton button) const;
        bool setSystemButton(CoreWindowAgent::SystemButton button, const QObject *obj);
        inline QObject *titleBar() const;
        bool setTitleBar(QObject *obj);
        inline const QObject *titleBar() const;
        bool setTitleBar(const QObject *obj);
        void showSystemMenu(const QPoint &pos);
@@ -46,11 +46,11 @@
        std::unique_ptr<WindowItemDelegate> m_delegate;
        QWindow *m_windowHandle;
        QSet<QObject *> m_hitTestVisibleItems;
        QSet<const QObject *> m_hitTestVisibleItems;
        QList<QRect> m_hitTestVisibleRects;
        QObject *m_titleBar{};
        std::array<QObject *, CoreWindowAgent::NumSystemButton> m_systemButtons{};
        const QObject *m_titleBar{};
        std::array<const QObject *, CoreWindowAgent::NumSystemButton> m_systemButtons{};
        // Cached shape
        mutable bool hitTestVisibleShapeDirty{};
@@ -65,16 +65,16 @@
        return m_windowHandle;
    }
    inline bool AbstractWindowContext::isHitTestVisible(QObject *obj) const {
    inline bool AbstractWindowContext::isHitTestVisible(const QObject *obj) const {
        return m_hitTestVisibleItems.contains(obj);
    }
    inline QObject *
    inline const QObject *
        AbstractWindowContext::systemButton(CoreWindowAgent::SystemButton button) const {
        return m_systemButtons[button];
    }
    inline QObject *AbstractWindowContext::titleBar() const {
    inline const QObject *AbstractWindowContext::titleBar() const {
        return m_titleBar;
    }
src/quick/quickwindowagent.cpp
@@ -41,12 +41,12 @@
        return true;
    }
    QQuickItem *QuickWindowAgent::titleBar() const {
    const QQuickItem *QuickWindowAgent::titleBar() const {
        Q_D(const QuickWindowAgent);
        return static_cast<QQuickItem *>(d->context->titleBar());
        return static_cast<const QQuickItem *>(d->context->titleBar());
    }
    void QuickWindowAgent::setTitleBar(QQuickItem *item) {
    void QuickWindowAgent::setTitleBar(const QQuickItem *item) {
        Q_D(QuickWindowAgent);
        if (!d->context->setTitleBar(item)) {
            return;
@@ -54,12 +54,12 @@
        Q_EMIT titleBarWidgetChanged(item);
    }
    QQuickItem *QuickWindowAgent::systemButton(SystemButton button) const {
    const QQuickItem *QuickWindowAgent::systemButton(SystemButton button) const {
        Q_D(const QuickWindowAgent);
        return static_cast<QQuickItem *>(d->context->systemButton(button));
        return static_cast<const QQuickItem *>(d->context->systemButton(button));
    }
    void QuickWindowAgent::setSystemButton(SystemButton button, QQuickItem *item) {
    void QuickWindowAgent::setSystemButton(SystemButton button, const QQuickItem *item) {
        Q_D(QuickWindowAgent);
        if (!d->context->setSystemButton(button, item)) {
            return;
@@ -67,12 +67,12 @@
        Q_EMIT systemButtonChanged(button, item);
    }
    bool QuickWindowAgent::isHitTestVisible(QQuickItem *item) const {
    bool QuickWindowAgent::isHitTestVisible(const QQuickItem *item) const {
        Q_D(const QuickWindowAgent);
        return d->context->isHitTestVisible(item);
    }
    void QuickWindowAgent::setHitTestVisible(QQuickItem *item, bool visible) {
    void QuickWindowAgent::setHitTestVisible(const QQuickItem *item, bool visible) {
        Q_D(QuickWindowAgent);
        d->context->setHitTestVisible(item, visible);
    }
src/quick/quickwindowagent.h
@@ -21,19 +21,19 @@
    public:
        bool setup(QQuickWindow *window);
        QQuickItem *titleBar() const;
        void setTitleBar(QQuickItem *item);
        const QQuickItem *titleBar() const;
        void setTitleBar(const QQuickItem *item);
        QQuickItem *systemButton(SystemButton button) const;
        void setSystemButton(SystemButton button, QQuickItem *item);
        const QQuickItem *systemButton(SystemButton button) const;
        void setSystemButton(SystemButton button, const QQuickItem *item);
        bool isHitTestVisible(QQuickItem *item) const;
        void setHitTestVisible(QQuickItem *item, bool visible = true);
        bool isHitTestVisible(const QQuickItem *item) const;
        void setHitTestVisible(const QQuickItem *item, bool visible = true);
        void setHitTestVisible(const QRect &rect, bool visible = true);
    Q_SIGNALS:
        void titleBarWidgetChanged(QQuickItem *item);
        void systemButtonChanged(SystemButton button, QQuickItem *item);
        void titleBarWidgetChanged(const QQuickItem *item);
        void systemButtonChanged(SystemButton button, const QQuickItem *item);
    protected:
        QuickWindowAgent(QuickWindowAgentPrivate &d, QObject *parent = nullptr);
src/widgets/widgetwindowagent.cpp
@@ -42,12 +42,12 @@
        return true;
    }
    QWidget *WidgetWindowAgent::titleBar() const {
    const QWidget *WidgetWindowAgent::titleBar() const {
        Q_D(const WidgetWindowAgent);
        return static_cast<QWidget *>(d->context->titleBar());
        return static_cast<const QWidget *>(d->context->titleBar());
    }
    void WidgetWindowAgent::setTitleBar(QWidget *w) {
    void WidgetWindowAgent::setTitleBar(const QWidget *w) {
        Q_D(WidgetWindowAgent);
        if (!d->context->setTitleBar(w)) {
            return;
@@ -55,12 +55,12 @@
        Q_EMIT titleBarWidgetChanged(w);
    }
    QWidget *WidgetWindowAgent::systemButton(SystemButton button) const {
    const QWidget *WidgetWindowAgent::systemButton(SystemButton button) const {
        Q_D(const WidgetWindowAgent);
        return static_cast<QWidget *>(d->context->systemButton(button));
        return static_cast<const QWidget *>(d->context->systemButton(button));
    }
    void WidgetWindowAgent::setSystemButton(SystemButton button, QWidget *w) {
    void WidgetWindowAgent::setSystemButton(SystemButton button, const QWidget *w) {
        Q_D(WidgetWindowAgent);
        if (!d->context->setSystemButton(button, w)) {
            return;
@@ -68,12 +68,12 @@
        Q_EMIT systemButtonChanged(button, w);
    }
    bool WidgetWindowAgent::isHitTestVisible(QWidget *w) const {
    bool WidgetWindowAgent::isHitTestVisible(const QWidget *w) const {
        Q_D(const WidgetWindowAgent);
        return d->context->isHitTestVisible(w);
    }
    void WidgetWindowAgent::setHitTestVisible(QWidget *w, bool visible) {
    void WidgetWindowAgent::setHitTestVisible(const QWidget *w, bool visible) {
        Q_D(WidgetWindowAgent);
        d->context->setHitTestVisible(w, visible);
    }
src/widgets/widgetwindowagent.h
@@ -20,19 +20,19 @@
    public:
        bool setup(QWidget *w);
        QWidget *titleBar() const;
        void setTitleBar(QWidget *w);
        const QWidget *titleBar() const;
        void setTitleBar(const QWidget *w);
        QWidget *systemButton(SystemButton button) const;
        void setSystemButton(SystemButton button, QWidget *w);
        const QWidget *systemButton(SystemButton button) const;
        void setSystemButton(SystemButton button, const QWidget *w);
        bool isHitTestVisible(QWidget *w) const;
        void setHitTestVisible(QWidget *w, bool visible = true);
        bool isHitTestVisible(const QWidget *w) const;
        void setHitTestVisible(const QWidget *w, bool visible = true);
        void setHitTestVisible(const QRect &rect, bool visible = true);
    Q_SIGNALS:
        void titleBarWidgetChanged(QWidget *w);
        void systemButtonChanged(SystemButton button, QWidget *w);
        void titleBarWidgetChanged(const QWidget *w);
        void systemButtonChanged(SystemButton button, const QWidget *w);
    protected:
        WidgetWindowAgent(WidgetWindowAgentPrivate &d, QObject *parent = nullptr);