Review Request: SystemTrayIcon behavior not consistent with taskbar in some circumstances

Mathieu Seigneurin matsei at
Sat Apr 18 10:34:53 BST 2009

This is an automatically generated e-mail. To reply, visit:

(Updated 2009-04-18 02:34:53.046236)

Review request for kdelibs.


Thanks for looking at this!

Your suggestion to just use minimzeRestore simplifies the diff indeed. Amended
patch uploaded.

I guess there are two different topics.

1/ The 'minimize when app is visible on another desktop'
issue is visible with pretty much all the apps I try on 4.2.2 (Gentoo build).
KAlarm behaves like that for example on my desktop (show it on one desktop, move to another
desktop and click on the systray icon minimizes it).

I also test with a minimal app that is essentially just this:

KMyWin::KMyWin(): KMainWindow()
    m_icon = KIcon("konqueror").pixmap(22);
    m_tray = new KSystemTrayIcon(m_icon, this);

2/ "On All Desktop" property issue
This also applies to all apps, but I'm not sure it's a very important issue.
To reproduce, I do the following:
  Start my test app
  Set 'On All Desktops'
  Hide to system tray
=> here, d->onAllDesktops == true
  Show the app again
=> restored to all desktops: ok
  Move to desktop 1 only
  Click on system tray
=> here d->onAllDesktops is still == true, to the app gets shown on all desktops

For both the issues, some apps (aKregator and KMail notably) behave differently
(they use custom derived classes for system tray, so different issues).

But if you can't reproduce either of these behaviors, I'm worried I might have something iffy
on my system. I just rebuilt kdeui from trunk, tested without patch and can confirm both of these here,
then tested with the attached patch and it does appear to "fix" it.

BTW these are really minor problems. If you don't think they are worth fixing, I can live with that :-)



Right now on kde-4.2.2 a dummy application that uses plain KSystemTrayIcon has
the following behavior:
- app show on current desktop, not obscured
  - click on taskbar entry => minimize to taskbar
  - click on system tray => minimize to tray
- app on current desktop, obscured
  - click on taskbar entry => raise, focus
  - click on system tray => raise, focus
- app hidden in systray, not showing or minimized anywhere
  - click on systray => show, raise, focus on current desktop
- app shown on other desktop, minimized:
  - click on taskbar entry => move user to app's desktop
  - click on systray => move user to app's desktop
All this is fine and consistent

- app shown on other desktop, NOT minimized:
  - click on taskbar entry => move to app's desktop, un-minimize raise focus
  - click on systray => hide app in systray

This last behavior is a bit surprising and is the only inconsistency I can find
between taskbar and systray handling (appart from the very first point which is
obviously what is expected).

Additionaly, there is a bug in the systray handling with regards to windows
showing on all desktops. If that setting is changed between hide/restores from
tray, the cached d->onAllDesktops can be stale. This patch should fix that too.

Thanks for reading!

This addresses bugs 74938 and 188866.

Diffs (updated)

  /trunk/KDE/kdelibs/kdeui/util/ksystemtrayicon.cpp 955625 



I think I tested all the combinations of minimize/hide/restore/desktop dance,
but some might well have slipped by...



More information about the kde-core-devel mailing list