/*! Sends \a message through the event filters that were set by installNativeEventFilter(). This function returns \c true as soon as an event filter returns \c true, and false otherwise to indicate that the processing of the event should continue. Subclasses of QAbstractEventDispatcher \e must call this function for \e all messages received from the system to ensure compatibility with any extensions that may be used in the application. The type of event \a eventType is specific to the platform plugin chosen at run-time, and can be used to cast message to the right type. The \a result pointer is only used on Windows, and corresponds to the LRESULT pointer. Note that the type of \a message is platform dependent. See QAbstractNativeEventFilter for details. \sa installNativeEventFilter(), QAbstractNativeEventFilter::nativeEventFilter() \since 5.0 */ bool QAbstractEventDispatcher::filterNativeEvent(const QByteArray &eventType, void *message, long *result) { Q_D(QAbstractEventDispatcher); if (!d->eventFilters.isEmpty()) { // Raise the loopLevel so that deleteLater() calls in or triggered // by event_filter() will be processed from the main event loop. QScopedLoopLevelCounter loopLevelCounter(d->threadData); for (int i = 0; i < d->eventFilters.size(); ++i) { QAbstractNativeEventFilter *filter = d->eventFilters.at(i); if (!filter) continue; if (filter->nativeEventFilter(eventType, message, result)) return true; } } return false; }
static PyObject *meth_QAbstractNativeEventFilter_nativeEventFilter(PyObject *sipSelf, PyObject *sipArgs) { PyObject *sipParseErr = NULL; PyObject *sipOrigSelf = sipSelf; { const QByteArray* a0; int a0State = 0; void* a1; long a2; QAbstractNativeEventFilter *sipCpp; if (sipParseArgs(&sipParseErr, sipArgs, "BJ1v", &sipSelf, sipType_QAbstractNativeEventFilter, &sipCpp, sipType_QByteArray, &a0, &a0State, &a1)) { bool sipRes; if (!sipOrigSelf) { sipAbstractMethod(sipName_QAbstractNativeEventFilter, sipName_nativeEventFilter); return NULL; } Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->nativeEventFilter(*a0,a1,&a2); Py_END_ALLOW_THREADS sipReleaseType(const_cast<QByteArray *>(a0),sipType_QByteArray,a0State); return sipBuildResult(0,"(bl)",sipRes,a2); } } /* Raise an exception if the arguments couldn't be parsed. */ sipNoMethod(sipParseErr, sipName_QAbstractNativeEventFilter, sipName_nativeEventFilter, doc_QAbstractNativeEventFilter_nativeEventFilter); return NULL; }