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.