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 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 windowStartSystemMove2(const QPoint &pos);

View File

@ -54,7 +54,7 @@ public:
void attachToWindow();
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 windowStartSystemMove2(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 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 windowStartSystemMove2(const QPoint &pos);

View File

@ -50,7 +50,7 @@ public:
void attachToWindow();
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 windowStartSystemMove2(const QPoint &pos);
void windowStartSystemResize2(const Qt::Edges edges, const QPoint &pos);

View File

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

View File

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