common: improve robustness

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
Yuhang Zhao 2022-05-20 17:36:44 +08:00
parent 44b3730056
commit 5754f2ec20
6 changed files with 14 additions and 16 deletions

View File

@ -56,7 +56,7 @@ public Q_SLOTS:
void setTitleBarItem(QQuickItem *value); void setTitleBarItem(QQuickItem *value);
void setSystemButton(QQuickItem *item, const QuickGlobal::SystemButtonType buttonType); void setSystemButton(QQuickItem *item, const QuickGlobal::SystemButtonType buttonType);
void setHitTestVisible(QQuickItem *item); void setHitTestVisible(QQuickItem *item, const bool visible = true);
void showSystemMenu(const QPoint &pos); void showSystemMenu(const QPoint &pos);
void windowStartSystemMove2(const QPoint &pos); void windowStartSystemMove2(const QPoint &pos);

View File

@ -54,7 +54,7 @@ public:
void attachToWindow(); void attachToWindow();
void setSystemButton(QQuickItem *item, const QuickGlobal::SystemButtonType buttonType); void setSystemButton(QQuickItem *item, const QuickGlobal::SystemButtonType buttonType);
void setHitTestVisible(QQuickItem *item); void setHitTestVisible(QQuickItem *item, const bool visible = true);
void showSystemMenu(const QPoint &pos); void showSystemMenu(const QPoint &pos);
void windowStartSystemMove2(const QPoint &pos); void windowStartSystemMove2(const QPoint &pos);
void windowStartSystemResize2(const Qt::Edges edges, const QPoint &pos); void windowStartSystemResize2(const Qt::Edges edges, const QPoint &pos);

View File

@ -52,7 +52,7 @@ public Q_SLOTS:
void setTitleBarWidget(QWidget *widget); void setTitleBarWidget(QWidget *widget);
void setSystemButton(QWidget *widget, const Global::SystemButtonType buttonType); void setSystemButton(QWidget *widget, const Global::SystemButtonType buttonType);
void setHitTestVisible(QWidget *widget); void setHitTestVisible(QWidget *widget, const bool visible = true);
void showSystemMenu(const QPoint &pos); void showSystemMenu(const QPoint &pos);
void windowStartSystemMove2(const QPoint &pos); void windowStartSystemMove2(const QPoint &pos);

View File

@ -50,7 +50,7 @@ public:
void attachToWindow(); void attachToWindow();
void setSystemButton(QWidget *widget, const Global::SystemButtonType buttonType); void setSystemButton(QWidget *widget, const Global::SystemButtonType buttonType);
void setHitTestVisible(QWidget *widget); void setHitTestVisible(QWidget *widget, const bool visible = true);
void showSystemMenu(const QPoint &pos); void showSystemMenu(const QPoint &pos);
void windowStartSystemMove2(const QPoint &pos); void windowStartSystemMove2(const QPoint &pos);
void windowStartSystemResize2(const Qt::Edges edges, const QPoint &pos); void windowStartSystemResize2(const Qt::Edges edges, const QPoint &pos);

View File

@ -46,7 +46,7 @@ struct QuickHelperData
bool attached = false; bool attached = false;
SystemParameters params = {}; SystemParameters params = {};
QPointer<QQuickItem> titleBarItem = nullptr; QPointer<QQuickItem> titleBarItem = nullptr;
QList<QQuickItem *> hitTestVisibleItems = {}; QList<QPointer<QQuickItem>> hitTestVisibleItems = {};
QPointer<QQuickItem> windowIconButton = nullptr; QPointer<QQuickItem> windowIconButton = nullptr;
QPointer<QQuickItem> contextHelpButton = nullptr; QPointer<QQuickItem> contextHelpButton = nullptr;
QPointer<QQuickItem> minimizeButton = nullptr; QPointer<QQuickItem> minimizeButton = nullptr;
@ -223,7 +223,7 @@ void FramelessQuickHelperPrivate::setSystemButton(QQuickItem *item, const QuickG
} }
} }
void FramelessQuickHelperPrivate::setHitTestVisible(QQuickItem *item) void FramelessQuickHelperPrivate::setHitTestVisible(QQuickItem *item, const bool visible)
{ {
Q_ASSERT(item); Q_ASSERT(item);
if (!item) { if (!item) {
@ -234,12 +234,11 @@ void FramelessQuickHelperPrivate::setHitTestVisible(QQuickItem *item)
if (!data) { if (!data) {
return; return;
} }
static constexpr const bool visible = true;
const bool exists = data->hitTestVisibleItems.contains(item); const bool exists = data->hitTestVisibleItems.contains(item);
if (visible && !exists) { if (visible && !exists) {
data->hitTestVisibleItems.append(item); data->hitTestVisibleItems.append(item);
} }
if constexpr (!visible && exists) { if (!visible && exists) {
data->hitTestVisibleItems.removeAll(item); data->hitTestVisibleItems.removeAll(item);
} }
} }
@ -672,14 +671,14 @@ void FramelessQuickHelper::setSystemButton(QQuickItem *item, const QuickGlobal::
d->setSystemButton(item, buttonType); d->setSystemButton(item, buttonType);
} }
void FramelessQuickHelper::setHitTestVisible(QQuickItem *item) void FramelessQuickHelper::setHitTestVisible(QQuickItem *item, const bool visible)
{ {
Q_ASSERT(item); Q_ASSERT(item);
if (!item) { if (!item) {
return; return;
} }
Q_D(FramelessQuickHelper); Q_D(FramelessQuickHelper);
d->setHitTestVisible(item); d->setHitTestVisible(item, visible);
} }
void FramelessQuickHelper::showSystemMenu(const QPoint &pos) void FramelessQuickHelper::showSystemMenu(const QPoint &pos)

View File

@ -43,7 +43,7 @@ struct WidgetsHelperData
bool attached = false; bool attached = false;
SystemParameters params = {}; SystemParameters params = {};
QPointer<QWidget> titleBarWidget = nullptr; QPointer<QWidget> titleBarWidget = nullptr;
QWidgetList hitTestVisibleWidgets = {}; QList<QPointer<QWidget>> hitTestVisibleWidgets = {};
QPointer<QWidget> windowIconButton = nullptr; QPointer<QWidget> windowIconButton = nullptr;
QPointer<QWidget> contextHelpButton = nullptr; QPointer<QWidget> contextHelpButton = nullptr;
QPointer<QWidget> minimizeButton = nullptr; QPointer<QWidget> minimizeButton = nullptr;
@ -170,7 +170,7 @@ QWidget *FramelessWidgetsHelperPrivate::getTitleBarWidget() const
return getWindowData().titleBarWidget; return getWindowData().titleBarWidget;
} }
void FramelessWidgetsHelperPrivate::setHitTestVisible(QWidget *widget) void FramelessWidgetsHelperPrivate::setHitTestVisible(QWidget *widget, const bool visible)
{ {
Q_ASSERT(widget); Q_ASSERT(widget);
if (!widget) { if (!widget) {
@ -181,12 +181,11 @@ void FramelessWidgetsHelperPrivate::setHitTestVisible(QWidget *widget)
if (!data) { if (!data) {
return; return;
} }
static constexpr const bool visible = true;
const bool exists = data->hitTestVisibleWidgets.contains(widget); const bool exists = data->hitTestVisibleWidgets.contains(widget);
if (visible && !exists) { if (visible && !exists) {
data->hitTestVisibleWidgets.append(widget); data->hitTestVisibleWidgets.append(widget);
} }
if constexpr (!visible && exists) { if (!visible && exists) {
data->hitTestVisibleWidgets.removeAll(widget); data->hitTestVisibleWidgets.removeAll(widget);
} }
} }
@ -665,14 +664,14 @@ void FramelessWidgetsHelper::setSystemButton(QWidget *widget, const SystemButton
d->setSystemButton(widget, buttonType); d->setSystemButton(widget, buttonType);
} }
void FramelessWidgetsHelper::setHitTestVisible(QWidget *widget) void FramelessWidgetsHelper::setHitTestVisible(QWidget *widget, const bool visible)
{ {
Q_ASSERT(widget); Q_ASSERT(widget);
if (!widget) { if (!widget) {
return; return;
} }
Q_D(FramelessWidgetsHelper); Q_D(FramelessWidgetsHelper);
d->setHitTestVisible(widget); d->setHitTestVisible(widget, visible);
} }
void FramelessWidgetsHelper::showSystemMenu(const QPoint &pos) void FramelessWidgetsHelper::showSystemMenu(const QPoint &pos)