[Interest] [Qt4.8] UI events coming through despite QEventLoop::ExcludeUserInputEvents

René J.V. Bertin rjvbertin at gmail.com
Fri Nov 7 23:53:06 CET 2014


On Friday November 07 2014 23:09:16 Andreas Pakulat wrote:

Hi again,

> Not necessarily, or at least not necessarily user input events in the same
> process/application. For example think about a user moving a window over

That's what I meant, they may not result from direct interaction with the application, but they do result from user input.

> I have no clue about libdbusmenu-qt or how it works. kdeui seems to link it
> in, so any KDE app will use it too. Plasma links against it as well, so I
> guess this really is for the menus in the systray or something like that.
> Yeah, all the dbusmenu library and protocol do is exporting menu
> information over dbus. How this is used then by another application also
> connected to dbus is a different story. I guess in your case its the
> systray app then, which makes sense since plasma uses the library
> explicitly as well - like to import the menu's of all systray-enabled
> applications.

> Sure there's a separate application managing the systray in a KDE session:
> Plasma (can't say which of the plasma processes exactly don't have an
> in-depth overview of the architecture there). Thats a separate process that
> gathers the icon and context menu and other things like notifications shown
> in the systray from the various applications. And as a separate process its
> not affected by eventloop filters in KMail and it has a way to tell kmail
> when an action in the context menu of KMail's systray entry has been
> clicked. That way is afaiu libdbusmenu-qt and its dbus communication and
> thats hitting you in that second backtrace.

Right. Now I'm pretty sure that the actual drawing (etc) of the systray menu happens in KMail, but apparently as a result of DBus messages. Seems awfully complicated, but also about the only way to make the thing optional and compatible with launch the application when there's nothing to leave the systray icon, or something that's not KDE (e.g. running KMail under a Gnome session).
If things really work that way they could perfectly well work the same way on OS X - at least if OS X had the Plasma applications :)

Still, if under Qt/X11 the Systray icon and menu are managed by plasma over the DBus, and KMail is thus coded to "work that way", how can the same code function without those incoming DBus messages that aren't being sent because there is no Plasma on OS X?

R.



More information about the Interest mailing list