Sorry for my extremely late reply and thanks for your suggestions. Sure, doing your own class is always an option, but isn’t it the main purpose of a framework to minimize these efforts in the first place?
IMO there are already too many broadcasters/listeners for different purposes, which can be confusing. Possibly all of them could be consolidated into a single class, if there was a more general way of passing parameters along with the message. Even a simple bit-masked integer would help a lot.
On a side note, for another project, I implemented a notifier that receives and dispatches messages to any object that expressed interest in notifications of a certain type and origin, synchronously or asynchronously, message thread or directly. This decouples senders from receivers and allows for receivers to express interest in objects that don’t belong to them in any way, or don’t even exist (yet). There’s only one messaging system for all purposes, not only GUI.
The biggest advantage however is that all dependencies of various kinds are expressed in a declarative fashion at a single place. This has been a live saver in a project with 3,000+ classes. No idea how this would translate to C++, though, but maybe a direction worth thinking about.