Event Filters

Since KDDW works with non-Qt, we can't use Qt event filters directly, so we added an abstraction layer.
Event filters implement EventFilterInterface. For Qt, we have a GlobalEventFilter class, which calls qGuiApp->installEventFilter, then forwards events to all registered EventFilterInterface.

We have the following global event filters:

  • DockRegistry singleton Catches expose events to maintain floating window z-order. Catches clicking on a MDI dock widget, to raise it. For hiding the auto-hide sidebar overlay when clicking elsewhere.

  • FallbackMouseGrabber For platforms that don't support grabbing the mouse. Mostly for QtQuick to workaround bugs.

  • Some wayland code

  • WidgetResizeHandler when used by MDI, or if EGLFS For resizing MDI dock widgets when mouse goes near borders.

mdi raise()

Clicking on a MDI dockwidget will raise it.
This is tested by tst_mdiZorder().
Actual raising is done by DockRegistry::onMouseButtonPress(), which is called by our global event filter.