Plasma::Svg is used in from the render thread in updatePaintNode of
various Plasma::*Item classes.
At this point the GUI thread is blocked, so it's probably safe, but it's
still spamming the log file like crazy.
TabGroup had a feature where if the item inserted in the stack was a
PlasmaComponents.Page it would update a property.
The check that this property exists was previously bogus leading to
errors if TabGroup was used with non-Page items that happened to have
the same property, such as Loader
In commit c709076d9c the SVG got somehow
broken leading to black rectangles in all cases where it was used.
This commit reverts to the last working version, then reapplies the
"thick margin" from the change.
A test is supplied to show all our frameSVGs to hopefully make this
easier to spot if it happens again.
BUG: 430390
As it turns out, QString::number() is quite expensive, especially when
using it in a code path that is called a lot of times. So instead, use a
struct with a custom hash method as cache ID. This is significantly
faster since we do not need to do memory allocations or string
conversions.
Applets are destroyed every time we close plasma as well as user
actions.
We only want to remove the shortcut from the registry from when an
applet is actually removed.
The end-user impact was limited as when we restart plasma we re-register
and plasma keeps it's own cache of what the shortcut should be so it
doesn't matter that kglobalaccel lost it's version.
The problem is that it means we send bogus calls to kglobalaccel after
kglobalaccel is potentially closed.
Testing done:
- set a shortcut on an applet
- confirmed it still worked after plasma restart
- removed an applet (and closed notificaiton so it wasn't in the
transient state)
- confirmed the entry was gone from system settings and the global
shortcut no-opped.
The concept of a disabled contextual item is nonsensical;
the set of context-sensitive actions is always supposed to be responsive
to the context. Accordingly, if the calling code has marked any actions
as disabled, let's hide them entirely.
We can't remove them from the model because they might become re-enabled
at a time when the calling app sees fit (perhaps the context has
changed). So instead we have to set visible to false and height to 0, to
ensure that the listview has the correct height. This is a hack, but I
don't see a better way to do it.
The memory penalty to having invisible but created items should be
negligible since there are only ever a maximum of about 3 items in here.
make possible to write containmentDisplayHintsChanged from
ContainmentInterface QML
when containmentDisplayHintsChanged, the containment forwards to
all its applets
Add a Page-derived component intended as a root
for full representations.
It may go over the plasmoid edges (both on desktop and popups)
with the properties applyHorizontalPadding and applyVerticalPadding.
When the contentItem is a ScrollView or a Scrollarea,
the plasmoid margins will be automatically removed.
Avoid using KPluginInfo and KPluginTrader in favor of KPluginMetaData
and KPluginLoader.
Add new method that uses KPluginMetaData
Deprecate old KPluginInfo-based methods.
See also https://phabricator.kde.org/T13889