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 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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue