Focus stealing prevention and SNI conflicts

Thomas Lübking thomas.luebking at gmail.com
Sat Jul 23 12:21:06 UTC 2011


Am Sat, 23 Jul 2011 09:16:06 +0200
schrieb Martin Gräßlin <mgraesslin at kde.org>:

> I think the problem would go away if all windows opened from a SNI
> context menu are transient to Plasma. So how do we either
> a) communicate to the applications that they should set the Plasma's
> WID as its parent or b) let Plasma open the windows through the SNI
> API?

c) have SNI act on mb release (to pass the timer test)
d) have SNI release focus before doing anything - why
precisely does it require input focus at all and can we at least assume
that it's safe to drop it eg. once a qmenu has popped up?

IMO any way to make "the window" transient for plasma is suboptimal.

a) it's a lie. period. at best an abuse ;-)

b) while certainly possible the pass this along the dbus call of the
action it requires support from both sides (across toolkits, DE
supporters) as well as a usable leader WId and is quite system specific
(focus stealing prevention is not NETWM compliant, sending a WId to be
transient for requires NETWM as well as "a WId" -> no Win/Mac - meego?
And nobody knows about wayland input handling ;-)

c) every application has to do it by itself, yesno? (otherwise you'd
have to eventFilter() the application on QEvent::Show for
QWidget::isWindow(), trigger the client side SNI slot, wait
<some_time_tm> before removing the eventfilter, assuming that follow
client maps are not caused by SNI... ... ...  =P

d) it should break with the plasma-netbook shell, yesno?
(transient windows cannot go below their leader)

Cheers,
Thomas


More information about the Plasma-devel mailing list