-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/126369/
-----------------------------------------------------------

(Updated Dec. 17, 2015, 12:40 p.m.)


Review request for KDE Software on Mac OS X and KDE Frameworks.


Changes
-------

This is how things look when I patch the test application to set the 
`--active-icon` icon as the application (window) icon. After Martin's remark 
that "it looks a little strange", I thought I'd try to resize the menu icon to 
match the font height. But contrary to Qt4/KDE4 the menu icon appears to be 
resized automagically in Qt5/KF5.

Two questions:
- is it to be expected (in kstatusnotifieritemtest.cpp) that 
`tray->iconPixmap()` returns a null QIcon immediately after calling 
`tray->setIconByName()`?
More importantly:
- how exactly is the NeedsAttention mechanism supposed to work? If I call 
`tray->setAttentionIconByName()` explicitly that icon appears in the menubar 
when I set the NeedsAttention state. But it doesn't flash. The test application 
appears to use/call for the legacy attention mode; how is it supposed to carry 
on after the initial icon change, i.e. via what code path is the swapping 
achieved on Linux? If possible I'd like to find a acceptable initial fix 
(adaptation) to the NeedsAttention feature. I do not particularly care for 
flickering icons and that would be too "alien" anyway. If Qt provides an easy 
way to take the current icon shown in the menubar (or the attentionIconPixmap 
if not empty) and badge it that would be a good solution.

There is `QtMac::setBadgeLabelText()`; calling it with `QStringLiteral("!")` 
provides a nice exclamation mark badge on the application icon, but sadly that 
badged icon cannot be retrieved through `qApp->windowIcon()` (or any "internal" 
Cocoa method I could find).


Repository: knotifications


Description
-------

OS X has a number of limitations in features used by KNotifications, notably 
concerning the status notifier item (aka system tray icon).

This RR will likely evolve to address multiple limitations (at least also the 
NeedsAttention state); at the moment it only proposes an emulation of 
`QMenu::addSection`.

`QMenu::addSection` works by adding a QAction with a "texted separator" at the 
insertion location. Texted separators do not exist in menu items in the OS X 
"global" menubar (they become regular separators), and Qt will not provide a 
platform-specific implementation. Loss of the section title text is maybe not 
always an issue, but I think it is in the system tray menu. I therefore propose 
to emulate `QMenu::addSection` by replacing the texted separator with an 
inactive (disabled) menu item that shows the text, followed by a standard 
separator. Menus in the notification area are much less subject to interface 
guidelines, so the presence of an item icon is acceptable and IMO useful for 
the `titleAction`.

Testing the NeedsAttention state with the tests/kstatusnotifieritemtest 
application leads to disappearance of the menubar icon, i.e. the access to the 
notifier menu becomes invisible rather than blinking (which is what I get on 
Linux using the same packaging). Adding a few qDebug statements shows that the 
`attentionIcon` is empty.
I'd appreciate a crash course how this feature is supposed to work, so I can 
see if an OS X implementation might be feasible.


Diffs
-----

  src/kstatusnotifieritem.cpp f9bf460 

Diff: https://git.reviewboard.kde.org/r/126369/diff/


Testing
-------

On OS X 10.9.5 with Qt 5.5.1 and frameworks 5.17.0 .


File Attachments (updated)
----------------

the systray icon & menu created by kstatusnotifieritemtest . This application 
has no icon to show.
  
https://git.reviewboard.kde.org/media/uploaded/files/2015/12/16/286037ae-07b3-454a-a226-1748854493a1__kstatusnotifieritemtest-systray.png
The systray icon and menu created by the KDE4 kwalletmanager (code has an 
equivalent patch)
  
https://git.reviewboard.kde.org/media/uploaded/files/2015/12/16/4fc9d4e4-1537-478c-9196-94cbc17b6b7c__kwalletmanager-systray.png
An Apple systray icon+menu that shows icons (which cannot be hidden)
  
https://git.reviewboard.kde.org/media/uploaded/files/2015/12/16/fc48a963-2e18-4396-bd38-062d41688118__Apple-systray-menu-with-icons.png
kstatusnotifieritemtest with added appIcon
  
https://git.reviewboard.kde.org/media/uploaded/files/2015/12/17/e896e90d-f0a8-43f7-9199-847572832df7__kstatusnotifieritemtest-with-appIcon.png


Thanks,

René J.V. Bertin

_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to