forked from github_mirror/framelesshelper
common: improve robustness
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
44b3730056
commit
5754f2ec20
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue