summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-5.0.02
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp36
-rw-r--r--src/corelib/kernel/qcoreapplication.h5
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp15
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp3
7 files changed, 8 insertions, 63 deletions
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0
index df110ee3d0..2c90dde12a 100644
--- a/dist/changes-5.0.0
+++ b/dist/changes-5.0.0
@@ -390,7 +390,7 @@ QtCore
* The enum values simply didn't make sense in the first place and should simply be dropped.
* Filtering of native events (QCoreApplication::setEventFilter, as well as
- QApplication::x11EventFilter/macEventFilter/qwsEventFilter) have been replaced
+ QApplication::x11EventFilter/macEventFilter/qwsEventFilter/winEventFilter) have been replaced
with QCoreApplication::installNativeEventFilter and removeNativeEventFilter,
for an API much closer to QEvent filtering. Note that the native events that can be
filtered this way depend on which QPA backend is chosen, at runtime. On X11, XEvents are
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 5ffd94b068..58d8957812 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -2139,42 +2139,6 @@ void QCoreApplication::removeLibraryPath(const QString &path)
#endif //QT_NO_LIBRARY
/*!
- Sends \a message through the event filters that were set by
- installNativeEventFilter(). This function returns true as soon as an
- event filter returns 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.
-
- Note that the type of \a message is platform dependent. See
- QAbstractNativeEventFilter for details.
-
- \sa installNativeEventFilter()
- \since 5.0
-
- \internal
- This method only exists for the Windows event dispatcher to call the winEventFilter virtual.
- Every other platform can just use QAbstractNativeEventFilter::filterNativeEvent directly.
-*/
-bool QCoreApplication::filterNativeEvent(const QByteArray &eventType, void *message, long *result)
-{
- if (result)
- *result = 0;
-#ifdef Q_OS_WIN
- if (winEventFilter(reinterpret_cast<MSG *>(message), result))
- return true;
-#endif
- QAbstractEventDispatcher* dispatcher = QAbstractEventDispatcher::instance();
- if (dispatcher)
- return dispatcher->filterNativeEvent(eventType, message, result);
- return false;
-}
-
-
-/*!
Installs an event filter \a filterObj for all native events
received by the application in the main thread.
diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h
index 549b6f135d..b791c9168a 100644
--- a/src/corelib/kernel/qcoreapplication.h
+++ b/src/corelib/kernel/qcoreapplication.h
@@ -152,17 +152,12 @@ public:
static void flush();
-#if defined(Q_OS_WIN)
- virtual bool winEventFilter(MSG *message, long *result);
-#endif
-
#if defined(Q_OS_UNIX)
static void watchUnixSignal(int signal, bool watch);
#endif
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj);
void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj);
- bool filterNativeEvent(const QByteArray &eventType, void *message, long *result);
static bool isQuitLockEnabled();
static void setQuitLockEnabled(bool enabled);
diff --git a/src/corelib/kernel/qcoreapplication_win.cpp b/src/corelib/kernel/qcoreapplication_win.cpp
index e42411917f..bba27272f9 100644
--- a/src/corelib/kernel/qcoreapplication_win.cpp
+++ b/src/corelib/kernel/qcoreapplication_win.cpp
@@ -157,21 +157,6 @@ void qWinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParam,
Q_UNUSED(prevInstance);
}
-/*!
- The message procedure calls this function for every message
- received. Reimplement this function if you want to process window
- messages \a msg that are not processed by Qt. If you don't want
- the event to be processed by Qt, then return true and set \a result
- to the value that the window procedure should return. Otherwise
- return false.
-*/
-bool QCoreApplication::winEventFilter(MSG *msg, long *result) // Windows event filter
-{
- Q_UNUSED(msg);
- Q_UNUSED(result);
- return false;
-}
-
void QCoreApplicationPrivate::removePostedTimerEvent(QObject *object, int timerId)
{
QThreadData *data = object->d_func()->threadData;
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index e5cc627edb..baacfa6a80 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -353,13 +353,13 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA
msg.message = message;
msg.wParam = wp;
msg.lParam = lp;
- QCoreApplication *app = QCoreApplication::instance();
+ QAbstractEventDispatcher* dispatcher = QAbstractEventDispatcher::instance();
long result;
- if (!app) {
+ if (!dispatcher) {
if (message == WM_TIMER)
KillTimer(hwnd, wp);
return 0;
- } else if (app->filterNativeEvent(QByteArrayLiteral("windows_dispatcher_MSG"), &msg, &result)) {
+ } else if (dispatcher->filterNativeEvent(QByteArrayLiteral("windows_dispatcher_MSG"), &msg, &result)) {
return result;
}
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index b12975174f..b2c492af39 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -706,8 +706,8 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
msg.pt.y = GET_Y_LPARAM(lParam);
long filterResult = 0;
- QCoreApplication* coreApp = QCoreApplication::instance();
- if (coreApp && coreApp->filterNativeEvent(d->m_eventType, &msg, &filterResult)) {
+ QAbstractEventDispatcher* dispatcher = QAbstractEventDispatcher::instance();
+ if (dispatcher && dispatcher->filterNativeEvent(d->m_eventType, &msg, &filterResult)) {
*result = LRESULT(filterResult);
return true;
}
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index 7f197c8ad5..11e1cc0c17 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
@@ -543,7 +543,8 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
#endif
long result = 0;
- bool handled = QCoreApplication::instance()->filterNativeEvent(m_nativeInterface->genericEventFilterType(), event, &result);
+ QAbstractEventDispatcher* dispatcher = QAbstractEventDispatcher::instance();
+ bool handled = dispatcher && dispatcher->filterNativeEvent(m_nativeInterface->genericEventFilterType(), event, &result);
uint response_type = event->response_type & ~0x80;