From 03605a234142933dc49f1a6b2fbf49ba007d87f8 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周一, 29 1月 2024 22:10:43 +0800 Subject: [PATCH] Add "setGeometry" to delegate --- src/widgets/widgetitemdelegate.cpp | 4 ++++ src/widgets/widgetitemdelegate_p.h | 1 + src/core/contexts/abstractwindowcontext.cpp | 2 +- src/core/windowitemdelegate_p.h | 1 + src/quick/quickitemdelegate_p.h | 1 + src/quick/quickitemdelegate.cpp | 4 ++++ 6 files changed, 12 insertions(+), 1 deletions(-) diff --git a/src/core/contexts/abstractwindowcontext.cpp b/src/core/contexts/abstractwindowcontext.cpp index 6f2e421..96d215a 100644 --- a/src/core/contexts/abstractwindowcontext.cpp +++ b/src/core/contexts/abstractwindowcontext.cpp @@ -211,7 +211,7 @@ int y = (screenGeometry.height() - windowGeometry.height()) / 2; QPoint pos(x, y); pos += screenGeometry.topLeft(); - m_windowHandle->setPosition(pos); + m_delegate->setGeometry(m_host, QRect(pos, windowGeometry.size())); return; } diff --git a/src/core/windowitemdelegate_p.h b/src/core/windowitemdelegate_p.h index 1c57c36..75bbf1e 100644 --- a/src/core/windowitemdelegate_p.h +++ b/src/core/windowitemdelegate_p.h @@ -49,6 +49,7 @@ virtual void restoreCursorShape(QObject *host) const = 0; virtual void setWindowFlags(QObject *host, Qt::WindowFlags flags) const = 0; virtual void setWindowVisible(QObject *host, bool visible) const = 0; + virtual void setGeometry(QObject *host, const QRect &rect) = 0; virtual void bringWindowToTop(QObject *host) const = 0; private: diff --git a/src/quick/quickitemdelegate.cpp b/src/quick/quickitemdelegate.cpp index 3a0a3dd..8fd14e4 100644 --- a/src/quick/quickitemdelegate.cpp +++ b/src/quick/quickitemdelegate.cpp @@ -80,6 +80,10 @@ static_cast<QQuickWindow *>(host)->setVisible(visible); } + void QuickItemDelegate::setGeometry(QObject *host, const QRect &rect) { + static_cast<QQuickWindow *>(host)->setGeometry(rect); + } + void QuickItemDelegate::bringWindowToTop(QObject *host) const { static_cast<QQuickWindow *>(host)->raise(); } diff --git a/src/quick/quickitemdelegate_p.h b/src/quick/quickitemdelegate_p.h index 3dde59d..d72192c 100644 --- a/src/quick/quickitemdelegate_p.h +++ b/src/quick/quickitemdelegate_p.h @@ -45,6 +45,7 @@ void restoreCursorShape(QObject *host) const override; void setWindowFlags(QObject *host, Qt::WindowFlags flags) const override; void setWindowVisible(QObject *host, bool visible) const override; + void setGeometry(QObject *host, const QRect &rect) override; void bringWindowToTop(QObject *host) const override; }; diff --git a/src/widgets/widgetitemdelegate.cpp b/src/widgets/widgetitemdelegate.cpp index 4c7a40b..e1ff752 100644 --- a/src/widgets/widgetitemdelegate.cpp +++ b/src/widgets/widgetitemdelegate.cpp @@ -104,6 +104,10 @@ static_cast<QWidget *>(host)->setVisible(visible); } + void WidgetItemDelegate::setGeometry(QObject *host, const QRect &rect) { + static_cast<QWidget *>(host)->setGeometry(rect); + } + void WidgetItemDelegate::bringWindowToTop(QObject *host) const { static_cast<QWidget *>(host)->raise(); } diff --git a/src/widgets/widgetitemdelegate_p.h b/src/widgets/widgetitemdelegate_p.h index 71ff94f..19de708 100644 --- a/src/widgets/widgetitemdelegate_p.h +++ b/src/widgets/widgetitemdelegate_p.h @@ -46,6 +46,7 @@ void restoreCursorShape(QObject *host) const override; void setWindowFlags(QObject *host, Qt::WindowFlags flags) const override; void setWindowVisible(QObject *host, bool visible) const override; + void setGeometry(QObject *host, const QRect &rect) override; void bringWindowToTop(QObject *host) const override; }; -- Gitblit v1.9.1