Summary:
Allows
* projects linking to Plasma to hide deprecated API up to a
given version or silence deprecation warnings after a given version,
using
* -DPLASMA_DISABLE_DEPRECATED_BEFORE_AND_AT
* -DPLASMA_NO_DEPRECATED
* -DPLASMA_DEPRECATED_WARNINGS_SINCE
* -DPLASMA_NO_DEPRECATED_WARNINGS
* -DPLASMAQUICK_DISABLE_DEPRECATED_BEFORE_AND_AT
* -DPLASMAQUICK_NO_DEPRECATED
* -DPLASMAQUICK_DEPRECATED_WARNINGS_SINCE
* -DPLASMAQUICK_NO_DEPRECATED_WARNINGS
or
* -DKF_DISABLE_DEPRECATED_BEFORE_AND_AT
* -DKF_NO_DEPRECATED
* -DKF_DEPRECATED_WARNINGS_SINCE
* -DKF_NO_DEPRECATED_WARNINGS
Reviewers: #plasma, mart, davidedmundson, apol, mlaurent
Reviewed By: #plasma, mart, mlaurent
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D24678
Summary:
The plans are to switch on/off the whole plasma shell into edit mode.
For this it needs to be a global corona property, rather then just
containmentInterface.
Plasmashell would expose a dbus call to set it from systemsettings
Test Plan: plasmoid.editMode=true still works
Reviewers: #plasma, #vdg, ngraham
Reviewed By: #vdg, ngraham
Subscribers: ngraham, GB_2, broulik, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D24239
Summary:
Deleting AppletPrivate will delete the ConfigLoader which will cause a
save, which can trigger a configSaved signal.
I think it is correct that the config might emit a signal just before
closing, and not at fault.
AppletPrivate is deleted by this point, but Applet is not so the
connection is still alive.
When we handle the signal, it goes into a Q_PRIVATE_SLOT that crashes.
This disconnect pattern is already used for guarding self config
changes.
BUG: 411221
Test Plan: kquitapp5 plasmashell, no longer crashes
Reviewers: #plasma, alexeymin
Reviewed By: alexeymin
Subscribers: alexeymin, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D23707
Summary: This means they're found by unit tests pre-installation
Test Plan:
Removed installed files
Ran make (but not make install)
ConfigModelTest now passes
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D22682
Summary:
Some applets use completely the code of another one with the key
X-Plasma-RootPath.
At the moment it doesn't work on applets that have a binary plugin portion
This makes pluginloader load the plugin of the original applet we're using
Test Plan:
an applet that falls back to one that has a binary plugin now works.
ones that fall back to applets without binary plugin still work
normal applets as well
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D22675
Summary:
can't be enabled anywhere + not actually doing anything as there is no
backing for it in the cpp + qca isn't even looked for by cmake
Test Plan: none
Reviewers: #plasma, broulik
Reviewed By: #plasma, broulik
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D22618
Summary:
Extend the plasmoid startup cache to DataEngines and ContaimentActions.
Include a cache for script engines. In practice it's always the same, we don't
need to check the file system every time.
Reviewers: #plasma, davidedmundson, mart
Reviewed By: #plasma, davidedmundson, mart
Subscribers: davidedmundson, mart, broulik, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D22258
The CACHE_ID_NATURAL_SIZE adds stuff around the argument string, so explicitly move the ^ and $ outside.
Differential Revision: https://phabricator.kde.org/D22275
Summary: At the moment it was enabled in the PluginLoader but we were not using it anywhere.
Test Plan: See patch in plasma-workspace.
Reviewers: #plasma, #frameworks, mart
Reviewed By: #plasma, mart
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D22267
Summary:
X-KDE-ParentApp is the key in desktop file to display that given service
or application is part of the another application or extension of other
application. In KDE4 this key was used to mark applets to be used in the
specific application like plasma-desktop, kdevelop, amarok etc.
In KF5 world, none of this applications have applet loading mechanism
apart from plasma*, and there are likely only Plasma applet, containment
or dataengines.
Previous API, when no/empty parentApp was passed would filter out every
application which had something as parentApp. This was to ensure only
compatible plugins are loaded in Plasma. This resulted in applets
getting excluded if they suggested that org.kde.plasmashell is their
parent application. Refine this API to,
- If no/empty parentApp is provided, provide all applets
- If parentApp is provided, filter by applet
This behavior is more filter like instead of other way around.
CHANGELOG: Applet, DataEngine and containment listing methods in
Plasma::PluginLoader no longer filters the plugins with X-KDE-ParentApp
provided when empty string is passed.
Test Plan:
tested that plasma loads properly, plasmaengineexplorer lists
all engines and plasmawindowed works fine. Neverthless requires more testing
Reviewers: mart, apol
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D22049
Summary:
The object tracker was telling me it's notifying the same value it
already got, and reading the code it seems to be already notifying when it
actually changes.
Test Plan: tests pass, plasma runs fine.
Reviewers: #plasma
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D21481
This could break old-style connects. Let's keep it as it was until KF6
as discussed in the channel. Thanks frinring for pointing it out.
This reverts commit f631aec33f.
Summary: Instead copy the object, operate it and update it into the object.
Test Plan:
just used plasma shell and ran the tests. I'm not sure who uses this.
Issue found with clazy.
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D21483
Don't pass objects to lambdas that get unused.
Don't connect to lambdas without specifying the target object, if an object
reference is passed to the lambda.
Summary:
It can be unexpected that those are not reset when clearCache() was called.
With the current logic when a theme changes the mask cache not reset also
results in wrong lookups, as the cacheid used as key does not include the
theme name.
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D21172
Summary:
there are a few places which potentially pass a prefix with a trailing -,
e.g. if using directly the value of FrameSvg::prefix() or
FrameSvg::actualPrefix(). Support the assumption in such code, unbreaking
its currently not working behaviour.
Reviewers: #plasma, mart
Reviewed By: #plasma, mart
Subscribers: apol, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D21174
Summary:
d8a1a9eb08 changed the condition from
hasElementPrefix(q->prefix()) to hasElementPrefix(frame->requestedPrefix)
but it is not clear why, as the background is generated from the prefix
data & the requestedPrefix is no-where in effect.
As a result sometimes the background is not rendered for a given
not-existing requestedPrefix which was mapped to an empty prefix instead.
Reviewers: #plasma, mart
Reviewed By: #plasma, mart
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D21175
Summary:
The specification for FrameSvg does not require that all borders exist
or that left & right and top & bottom borders have samples with the same
size in the scalable dimension.
The old assumption in the code broke e.g. themes which had special
variants per screen side for the panel-background and left out elements
for the border side which would not be rendered anyway, but only set a
margin-hint. So e.g. for a panel on the east screen edge, without the
left border element set, leftHeight would be 0 and as result also the
right border not be painted due to an empty size.
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D21106
Summary:
The new icon was just added in D20367. The current icon is semantically and visually incorrect,
and the new one fixes that.
The current text also does not begin with an action verb, and this patch fixes that too.
Test Plan:
Before:
{F6759646, size=full}
After:
{F6759647, size=full}
{F6759649, size=full}
Reviewers: #vdg, #plasma, GB_2, filipf
Reviewed By: #vdg, GB_2, filipf
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D20392
Summary:
Allows themes to disable the blurring of what is behind panels,
if they either do not need it (being fully opaque) or by design want
non-blurry transparency.
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D19907
Summary: Currently it just fails silently.
Test Plan: Loaded a plasmoid with an incompatible plugin, warning is shown.
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: kde-frameworks-devel, plasma-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D19394
When a theme doesn't supply background contrast values, we take an educated guess based on whether it's a dark or light theme.
We didn't update the values when switching only color schemes at runtime (when theme follows it).
This lead to washed out Plasma popup and panel backgrounds. Instead, compute the fallback value at runtime.
Also, while at it, update complimentary colorscheme as well, which was forgotten here.
BUG: 401142
Differential Revision: https://phabricator.kde.org/D18487
Summary:
Leverages QSharedPointer for the reference counting.
Keeps the last value of the cacheId, as it can change sometimes and crash
the system.
Reviewers: #plasma, #frameworks, zzag
Reviewed By: #plasma, zzag
Subscribers: mart, zzag, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D17052
KPackagePrivate::internalPackage already existed, the re-assignment to a
new value causes a memory leak.
Trace:
Indirect leak of 112 byte(s) in 1 object(s) allocated from:
#0 0x544cc0 in operator new(unsigned long) (/home/kfunk/devel/install/kf5/bin/plasmashell+0x544cc0)
#1 0x7f905829163f in KPackage::Package::Package(KPackage::PackageStructure*) /home/kfunk/devel/src/kf5/kpackage/src/kpackage/package.cpp:51:9
#2 0x7f9058fad786 in Plasma::Package::Package(Plasma::PackageStructure*) /home/kfunk/devel/src/kf5/plasma-framework/src/plasma/package.cpp:66:34
#3 0x7f9058f14dee in Plasma::Corona::package() const /home/kfunk/devel/src/kf5/plasma-framework/src/plasma/corona.cpp:78:13
#4 0x5d9eb9 in ShellCorona::ShellCorona(QObject*) /home/kfunk/devel/src/kf5/plasma-workspace/shell/shellcorona.cpp:132:70
#5 0x65c31d in ShellManager::loadHandlers() /home/kfunk/devel/src/kf5/plasma-workspace/shell/shellmanager.cpp:93:21
When a dataengine failed to load it would ask PackageKit to install it but it's generally not how we want to distribute
plasmoid infrastructure these days and didn't work.
Differential Revision: https://phabricator.kde.org/D16301
It is a remnant of the Plasma Active days and didn't even compile.
This patch only removes those ifdefs, it doesn't fix any issues I found during (e.g. double lookups or the fact
that KRun::autoDelete is the default now)
Differential Revision: https://phabricator.kde.org/D16295
Summary:
At the moment we always look at the first fallback and load the original
theme again, rendering moot the fallback look-up.
Reviewers: #plasma, davidedmundson, hein
Reviewed By: #plasma, davidedmundson, hein
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D15970
Summary: This patch makes the text for removal and configuration actions consistent with one another.
Test Plan: {F6191533}
Reviewers: #plasma, #vdg, abetts
Reviewed By: #plasma, #vdg, abetts
Subscribers: abetts, broulik, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D14810
Summary:
mirroring the behavior when the applet is created by restorecontents,
invalid applets get immediately uireadyconstraint.
This solves the problem of panels not appearing when the setup js contains an non existent applet,
as the panel was waiting forever for applets to finish loading, which never happens
Test Plan: now js startup scripts with an invalid applet have panels loading correctly.
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D14341
Similar to KPackage's cache this speeds up startup where plugins are repeatedly looked up.
Especially the fallback path of looking in the plugin root directly causes quite some slowdown.
Differential Revision: https://phabricator.kde.org/D14009
Allows disabling all containment actions, such as context menus, middle click paste, wheel desktop switch, etc.
Differential Revision: https://phabricator.kde.org/D14045
Summary:
A FrameSvg can have wrong mask frame if image path has been changed after
the mask frame was generated. Take image path into account when deciding
whether the mask frame should be updated to address that problem.
Depends on D13384
Reviewers: #plasma, #frameworks, mart
Reviewed By: #plasma, mart
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D13496
Summary:
When trying to update the maskFrame, there is a chance that it is already
shared by several instances of FrameSvg. In that case, do not wreck maskFrame
and instead act as follows:
* deref it
* try to lookup a matching frame in the shared frames
* if there is the matching frame, use it
* otherwise create a new one
Reviewers: #plasma, #frameworks, mart
Reviewed By: #plasma, mart
Subscribers: mart, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D13384
Summary:
In some cases, when rendering frame svg background, measures & margins
do not correspond to `enabledBorders`. I.e. `bottomHeight` may be equal to 5,
but the bottom border is disabled. This causes visual artifacts like this
{F5878318, layout=center, size=full}
//Pay close attention to the bottom of the Task switcher. It has a transparent strip at the bottom, which shouldn't be there.//
The cause of this problem is that FrameSVGPrivate::alphaMask doesn't take enabledBorders
into account when it's making decision whether it should update maskFrame.
Just for reference, this is "after"
{F5878319, layout=center, size=full}
BUG: 382324
BUG: 390632
BUG: 391659
Test Plan:
* Triggered the Breeze task switcher (with compositing on and off)
* Didn't see any transparent strips
---
* Tried running FrameSvgTest, still passes
Reviewers: #plasma, #frameworks, mart
Reviewed By: #plasma, mart
Subscribers: abetts, mart, aseigo, broulik, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D13215
Summary:
FrameSVG documentation states
> ... topleft and topright will be ignored if top does not exist,
> and similarly for bottomleft and bottomright ...
Someone would assume that the same behaviour applies to the case
when left(or right) does not exist.
This change makes FrameSVG to comply with such expected behaviour.
### Before
{F5878439, layout=center, size=full}
The bottom border doesn't exist so the bottom-right corner should not
be drawn.
### After
{F5878440, layout=center, size=full}
Reviewers: #plasma, #frameworks, mart
Reviewed By: #plasma, mart
Subscribers: mart, kde-frameworks-devel
Tags: #frameworks, #plasma
Differential Revision: https://phabricator.kde.org/D13218
Summary:
There is no need to check whether `cachedBackground` is null, and if
it's null, return a null pixmap.
Reviewers: #plasma, #frameworks, apol
Reviewed By: apol
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D13287
Summary:
Follows HIG in using verb-based name, also starting the text with the most
important objective first.
As result also consistent with default text for similar action in menu of a
normal app (when using KStandardAction).
Reviewers: #vdg, #plasma, ngraham
Reviewed By: #vdg, ngraham
Subscribers: ngraham, #frameworks
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D12562
Summary:
add a version of containmentForScreen which it has the activity.
which is correct as the activity id of containments in in libplasma side.
this ensure the correctness of shellCorona createContainmentForActivity
as now it works also for activities different from the current one.
to make multimonitor a tad safer with it, when creating containments for an activity, initialize their lastScreen to the asked screen.
Test Plan: tried with an old plasmashell and is perfectly retrocompatible
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, #frameworks
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D11361
Summary:
Third part of https://phabricator.kde.org/D10627
According to the documentation at http://doc.qt.io/qt-5/qabstractnativeeventfilter.html
The type of event eventType is specific to the platform plugin chosen
at run-time, and can be used to cast message to the right type.
On X11, eventType is set to "xcb_generic_event_t", and the message can
be casted to a xcb_generic_event_t pointer.
The other eventType are "windows_generic_MSG" and "mac_generic_NSEvent".
No other eventType starts with an 'x'.
Reviewers: #frameworks, #plasma, mwolff, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: mwolff, plasma-devel, davidedmundson
Tags: #plasma, #frameworks
Differential Revision: https://phabricator.kde.org/D10670
Summary:
preload popups of some applets after init in the background
based on a value of X-Plasma-PreloadWeight in the desktop file
if present, otherwise some default values based on the applet
type (Provides)
Save the weight in the config, if an applet is never opened,
slowly decrease the weight, when it reaches 0 don't preload it
next start, increase every time it gets opened, so at the moment
it's quite aggressive about preloading, in order to not do it
a lot of plasma startups without touching the applet are needed
Applet with a very big weigth will be preloaded immediately,
therefore having an impact on the time it will take to have
a panel visible and usable, while lesser weigths will preload
after a random number of seconds between 2 and 10, so will load
in the background after everything is started
Test Plan:
Plasma starts up correctly, applets load correctly and can be added
correctly both those expanded or collapsed.
plasmashell appears correctly usable without too big hiccups even
while it's loading things in the background
some numbers:
without preloading, plasma takes around 64 mb of memory after startup
when preloading everything about 94, so it's a cost of about 30 mb
which is not negligible.
don't have precise timing, but if everything gets preloaded immediately,
the time to get an usable desktop appears to be at least doubled,
while the delayed preloading (except just a couple of applets) doesn't
seem to have a big impact on the time needed to get an usable desktop
Reviewers: #plasma
Subscribers: davidedmundson, broulik, apol, ngraham, plasma-devel, #frameworks
Tags: #plasma, #frameworks
Differential Revision: https://phabricator.kde.org/D10512
Summary:
I found two places in plasma-framework svg.cpp (Plasma::Svg) that were triggering this message.
path variable was not being checked for empty before passing to QFile::exists().
This seems to be one source of the issue reported in [[ https://bugs.kde.org/show_bug.cgi?id=388389 | Bug 388389 ]]
Test Plan: Found that kicker was triggering this message and also plasmashell tooltips.
Reviewers: #frameworks, davidedmundson
Reviewed By: davidedmundson
Subscribers: ngraham, alexeymin, aacid, #frameworks
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D9928
This reverts commit 4ce50cc61f.
This caused a regression with toggling compositing, causing SVG reloads
with the same path to switch to opague elements. As this revision was
meant as a performance optimization, it can be reverted with no other
consequence for now.