With the keyboard navigation patch there is the issue that sometimes,
due to sorting by SortFilterModel, the stack order of the items doesn't
correspond to the visual order of the items.
This is a problem wrt the recently introduced keyboard navigation, as
the tab order of items in qml is completely tied to the stack order,
resulting in an erratic tab navigation order (usually happens with
device notifier or bluetooth applets for instance)
Refactor and simply logic of "expanded" state when dialog with active applet or list of hidden applets is shown.
Fixes a problem with keyboard shortcut activation.
It also fixes a bug when dialog closes on "go-back" button click.
BUG: 427685
FIXED-IN: 5.21
CCBUG: 400278
QDBusConnectionInterface::serviceOwnerChanged is obsolete. It was used
because there was no support for watchin on serviwes usign wildcard.
Starting from Qt 5.14 it is possible, so that using obsolete function is
no longer necessary.
After !125 allowed plasmoid are not correctly stored in config. As a
result, for new installs all plasmoids is system tray settings are shown
as disabled, even if these are enabled by default.
After !125 allowed plasmoid are not correctly stored in config. As a
result, for new installs all plasmoids is system tray settings are shown
as disabled, even if these are enabled by default.
It is possible to assign default values in main.xml, but these are not
used for extraItems and knownItems. Add support for default values.
BUG: 423561
FIXED-IN: 5.19.3
If a service was registered between us requesting a list of names from
the daemon and us processing the reply we would miss it. An event
somewhat likely given plasmashell is very busy during startup.
DBus does guarantee preserved message order, so the correct thing to do
is:
- create a match rule for new servies on DBus daemon
- start fetching a list of names
- ignore all changes that happen in the meantime
- handle the list of all names
This will be race free
System tray models are created lazily, so it is possible that the configuration will load earlier and not notify the model of the stored values. Add explicit configuration load, so that it always loads correctly during the initialization.
This is a fix for regression introduced in the plasma/plasma-workspace!14
Summary:
SystemTray model was created in constructor, delay initialization and
create it lazily.
The `SystemTray::appletAdded` signal is connected to both SystemTray's
model and `Container`. `Container` must be connected first, because it sets
some properties of newly added applet: `visible` to false and `parent`
to the root item (container). If `Container` is connected second, then
newly created applet ios added to the model and rendered, but immediately
after that `Container` changes visibility to false.
BUG: 420993
Test Plan:
1. Do not play anything (no Medial Player icon at all)
2. Run Gwenview
3. Check if Medial Player icon in hidden view is rendered correct.
Before change:
Sometimes icon is not rendered, looks like invisible or fully transparent.
After change:
Icon rendered correctly.
Summary:
In some rare situations SNI icons are not rendered. It happens randomly, only some users are affected. It does not happen on every login.
Only SNI icons are not rendered, Plasmoids are fine. Restarting plasmashell or re-adding systemtray applet helps.
In QML all roles need to be defined before model is used. When data engines is used a a source for a data model, all roles has to be defined and proper value assigned (not a null QVariant). StatusNotifierItemSource does this properly, but in some situations it sets null QVariant for Icon. Setting empty/null QVariant removes key/role from the date set (DataConteiner implementation). If data model was loaded earlier or later when Icon has proper value it will work properly. In some rare situation it is possible that data model is loaded when Icon has null value assigned (in other words - removed), role is removed from the data model and not avaiable to system tray applet.
This fix makes sure that there is always a value for Icon role. To check if icon is null native method has to be used - QML does not understand that QIcon can be null.
BUG: 419305
FIXED-IN: 5.18.5
Test Plan: I don't have any reliable method to reproduce this issue.
Reviewers: #plasma_workspaces, #plasma, davidedmundson, broulik, ngraham
Reviewed By: ngraham
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D29386
Summary:
Use the unified data model everywhere, not just in configuration. This simplifies UI code, separetes presentation from data.
This requires the use of ListView and GridView.
This change enables the implementation of more advanced sorting algorithms for systemtray items.
Test Plan: Affects almost all areas of system tray.
Reviewers: #plasma_workspaces, #plasma, davidedmundson, ngraham, broulik
Reviewed By: #plasma_workspaces, #plasma, davidedmundson, ngraham
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D26992
Summary:
Replace two wrapping PlasmaCore.SortFilterModel with custom sorting on model side. Extract common code to base class.
This fixes small issue in sorting and allows to implement other improvements (later on).
Test Plan: Everything should work as before.
Reviewers: #plasma_workspaces, #plasma, davidedmundson, ngraham, broulik
Reviewed By: #plasma_workspaces, #plasma, davidedmundson, ngraham
Subscribers: mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D27088
Summary:
Combines settings of SNI icons and plasmoids in one list. Ability to disable whole section is removed.
Initial idea was proposed by Nicolas Fella (D22176).
BUG: 360307
FIXED-IN: 5.18.0
{F7880936}
Test Plan:
1. Disable/enable plasmoids
2. Set Shown/Hidden for plasmoid
3. Set shortcut for plasmoid
4. Previously hidden categories are shown
5. Show all icons and revert
6. Set Auto/Shown/Hidden for SNI icons
Reviewers: #plasma_workspaces, #plasma, davidedmundson, broulik, ngraham, mart
Reviewed By: #plasma_workspaces, #plasma, ngraham, mart
Subscribers: ahiemstra, mart, meven, nicolasfella, plasma-devel, ngraham
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D26586
Summary:
Currently there are two different sources of SystemTray items:
* Plasmoids
* Status Notifier
Thi change adds new model that holds both Plasmoids and SNIs.
Test Plan: Add/disable applets. Start/stop SNI app.
Reviewers: #plasma, broulik, ngraham, nicolasfella
Reviewed By: nicolasfella
Subscribers: plasma-devel, nicolasfella, anthonyfieroni
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D25580
Summary: KPluginInfo would force the load of the desktop file for information we don't need.
Test Plan: Plasma still works
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22480
Test Plan: system tray build with -DQT_NO_FOREACH, still does system tray things
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22066
Bus names that start with a colon (':') character are unique connection names rather than well-known bus names
you want to be listening for.
Since the same code path is used for initial setup as is for detecting services at runtime, we would needlessly
iterate the list of known dbus-activatable services as well as apply a regular expression on them for all unique
connection names wasting some cycles.
Differential Revision: https://phabricator.kde.org/D21451
Summary:
SystemTray::serviceRegistered is called tons of times; the regexp
construction inside the for-loop is expensive and should be avoided.
Thus construct the regexp once, and re-use the regexp object each time.
Test Plan:
Before:
{F6432674}
After:
{F6432675}
Reviewers: davidedmundson
Reviewed By: davidedmundson
Subscribers: apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D17025
Summary:
Those had no transient parent set, so they got displayed somewhere, most of the
time on the wrong screen.
Test Plan:
Works fine for spotify and kteatime now, but certain applications
which trigger a LayoutChanged signal on the opened event have a Y offset.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D11584
Summary: BUG: 381174
Test Plan:
Had debug in QtWayland
Clicked on systray
Had parent, menu was in the right position
Reviewers: #plasma, mart, graesslin
Reviewed By: #plasma, mart, graesslin
Subscribers: apol, graesslin, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D8338
Summary:
We can get into a state where we have applets with broken metadata.
(which is a different bug)
Someone clearly wrote this code to try and guard against accessing an
invalid metadata when checking names, but instead made it so that when
we try to remove a specific task in the system tray we accidentally also
remove up any of these applets as well, which doesn't make much sense.
CCBUG: 377050
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D5422
This way plasmoid and SNI context menus get accelerators assigned to by default.
CCBUG: 361915
Differential Revision: https://phabricator.kde.org/D5058
This belongs in a header only (where it already is) and my IDE complains about it.
Since the macro expands to nothing anyway this doesn't change anything.
Differential Revision: https://phabricator.kde.org/D4456
This is the same Plasma ContainmentInterface does. Otherwise QtQuick gets confused about mouse state.
Differential Revision: https://phabricator.kde.org/D4455
This belongs in a header only (where it already is) and my IDE complains about it.
Since the macro expands to nothing anyway this doesn't change anything.
Differential Revision: https://phabricator.kde.org/D4456
This is the same Plasma ContainmentInterface does. Otherwise QtQuick gets confused about mouse state.
Differential Revision: https://phabricator.kde.org/D4455
Summary:
Changes triggered by investigation into a long-running high CPU usage bug with system tray animations. The systray itself had icon name to icon resolution code, which was being triggered (twice) for every icon, every time any icon in the systray was updated. This code was spinning up a KIconLoader on each of these instances, and throwing it directly away. Each one triggered a large quantity of memory allocations and disk scans.
This patch moves the extra bit of "appName" logic from the native part of the system tray to the statusnotifieritem datasource, which already had a stored 'customIconLoader' to handle icon theme paths, and removes the special lookup from the sytemtray applet completely. It also prefers icons provided by the dataengine to doing another lookup (contentious?). This removes all the extra CPU usage outside of the QML scene graph and graphics drivers locally.
This is very much a looking for feedback item - there are things about the icon loading paths I almost certainly haven't appreciated yet, and perhaps preferring loading by icon name in the applet has a another purpose.
BUG: 356479
Test Plan: Have tested locally with kgpg and steam, the two apps I have that trigger the old code path. In neither case, however, did the appName logic produce a different result to the code with just the icon search path in statusnotifieritem.
Reviewers: #plasma, davidedmundson, mart
Reviewed By: #plasma, davidedmundson, mart
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2986