Focus stealing prevention and SNI conflicts

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


Am Sat, 23 Jul 2011 21:58:05 +0200
schrieb "Aaron J. Seigo" <aseigo at kde.org>:

> i'm not sure if this is a settings issue on my side or if focus
> stealing prevention is expecting window handling patterns that are
> not currently being adhered to by applications. if the latter, we
> must document somewhere exactly how to do it "right".

The transient client (pinentry) needs to support this "somehow" and the
mainwindow application needs to make usage of it. In case of pinentry,
try
pinentry-qt4 -g --parent-wid QWidget::window()->winId()

"-g" would prevent the stupid global kdb grab and
"--parent-wid" sets the client transient (to test this you can fetch
any clients WId "xwininfo -int" and pass that, when pinentry runs,
enter "getpin")

kdialog has similar flag.

Setting a transient relation can be achieved by
KWindowSystem::setMainWindow(QWidget *subwindow, WId mainwindow)
and is usually superflous but required if you want to do it across
processes (and in that case have the setting process accept the
required other WId as parameter or by dbus or whatever)

Cheers,
Thomas


More information about the Plasma-devel mailing list