Sine Striker
2023-12-19 2ccafcb1d891ed0fff4cc85729ca1faf5b7f1c96
src/widgets/widgetwindowagent.cpp
@@ -9,6 +9,27 @@
namespace QWK {
    class WidgetWinIdChangeEventFilter : public QObject {
    public:
        explicit WidgetWinIdChangeEventFilter(QWidget *widget, AbstractWindowContext *ctx)
            : QObject(ctx), widget(widget), ctx(ctx) {
            widget->installEventFilter(this);
        }
    protected:
        bool eventFilter(QObject *obj, QEvent *event) override {
            Q_UNUSED(obj)
            if (event->type() == QEvent::WinIdChange) {
                ctx->notifyWinIdChange();
            }
            return false;
        }
    protected:
        QWidget *widget;
        AbstractWindowContext *ctx;
    };
    WidgetWindowAgentPrivate::WidgetWindowAgentPrivate() = default;
    WidgetWindowAgentPrivate::~WidgetWindowAgentPrivate() = default;
@@ -36,14 +57,14 @@
        w->setAttribute(Qt::WA_DontCreateNativeAncestors);
        w->setAttribute(Qt::WA_NativeWindow);
        if (!d->setup(w, new WidgetItemDelegate())) {
            return false;
        }
        d->setup(w, new WidgetItemDelegate());
        d->hostWidget = w;
#ifdef Q_OS_WINDOWS
        d->setupWindows10BorderWorkaround();
#endif
        std::ignore = new WidgetWinIdChangeEventFilter(w, d->context.get());
        return true;
    }