System tray "close" dialog needs work

Aaron J. Seigo aseigo at
Wed Jan 5 23:19:01 GMT 2005

On Wednesday 05 January 2005 02:15, Sébastien Laoût wrote:
> * I've tryed to use kapp->widgetAt(g) (where g is a corner of the icon
> (a QPoint)), but it doesn't work since the widget is not in the current
> app (althrouth KSystemTray is a QLabel).
> So: no way to test if the kicker is raised/visible or not.

hrm.. .would sth like:

	QPoint p = systemtray->mapToGlobal(QPoint(0,0)); 
	if (QApplication::desktop()->screenGeometry()->contains(p))

work? i wonder even if just

	QApplication::desktop()->screenNumber(systemtray) == -1

would work?

this obviously doesn't cover the scenario where the panel is covered by 
something else though...

as for the KSystemTray object always returning true for isVisible(), the 
systemtray could do something like:

	KWin::WindowInfo info = KWin::windowInfo(emb->embeddedWinId());
	KWin::setState(emb->embeddedWinId(), info->state() | NET::Hidden)

and then do the reverse on showing ... 

note that the above is all completely untested, and just ideas =) it still 
won't solve things for 100% of the cases (e.g .the tray is obscured by 
another window).

Jason's suggestion to have the pixmap passed back via DCOP is likely the most 
foolproof method. as for not working in KDE, well, the user just doesn't get 
a pretty picture when they aren't in KDE?

Aaron J. Seigo
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <>

More information about the kde-core-devel mailing list