SineStriker
2024-05-09 bc6e2a4231d73d6e037340af9e73f2611649faa8
Optimize event filter forwarding
1个文件已修改
11 ■■■■ 已修改文件
src/core/qwkglobal.cpp 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/qwkglobal.cpp
@@ -10,17 +10,10 @@
namespace QWK {
    class HackedObject : public QObject {
    public:
        QObjectPrivate *d_func() const {
            return static_cast<QObjectPrivate *>(d_ptr.data());
        }
    };
    bool forwardObjectEventFilters(QObject *currentFilter, QObject *receiver, QEvent *event) {
        // https://github.com/qt/qtbase/blob/e26a87f1ecc40bc8c6aa5b889fce67410a57a702/src/corelib/kernel/qcoreapplication.cpp#L1244
        // Send the event through the rest event filters
        auto d = static_cast<HackedObject *>(receiver)->d_func();
        auto d = QObjectPrivate::get(receiver);
        bool findCurrent = false;
        if (receiver != QCoreApplication::instance() && d->extraData) {
            for (qsizetype i = 0; i < d->extraData->eventFilters.size(); ++i) {
@@ -34,7 +27,7 @@
                if (!obj)
                    continue;
                if (static_cast<HackedObject *>(obj)->d_func()->threadData.loadRelaxed() !=
                if (QObjectPrivate::get(obj)->threadData.loadRelaxed() !=
                    d->threadData.loadRelaxed()) {
                    qWarning(
                        "QCoreApplication: Object event filter cannot be in a different thread.");