`enabled` must be set in the backend because `visible` will always be
true after getting a valid nodeId, and sometimes we need to reset `enabled`
to false.
CCBUG: 449189
An input type agnostic way to activate systray items was needed. This
signal will be used for keyboard, mouse and touch navigation.
There was an activated() function that just started an animation which
has been renamed to startActivatedAnimation().
This makes it not be too wide due to the contentItem's margins, which
was an issue that went unnoticed because it was masked by always
disabling the horizontal scrollbar. Should we ever remove that override,
there won't be any regressions now.
We want to check the user-visible name, not the name of the file on disk.
In case we type "di", results like "Discord" or "Discover" are expected. With the old
logic however, we would reject discover, because the desktop file is called "org.kde.discover".
BUG: 443866
SessionManagementScreen is a FocusScope and needs focus explicitly assigned
to it. If inside a QQC2 StackView this is taken care of, but for some reason
in a QQC1 StackView this isn't the case for the initial item. Do it explicitly.
For these delegates, the width is computed automatically and correctly
from the parent ListView's width, taking into accounts margins and
scrollbar visibility.
SessionManagementScreen needs to be a FocusScope, so that when it gets focused
directly (through the StackView), it directs it to the proper control inside
instead of stealing it from them.
This fixes initial focus of the controls in the SDDM theme.
BUG: 447817
Double-quoted multi-line strings is a custom Qt/JS engine extension, and
as such it is better be avoided, since we have official widely
supported replacement.
GIT_SILENT
If invoked on gnome we should always return success
this is because a desktop file that has X-KDE-AutostartCondition
probably has an X-Gnome- equivalent and we only want one to run
this would match non systemd behaviour.
See also: https://github.com/systemd/systemd/pull/22115
This is something that came up in the monthly VDG meeting: the desktop
context menu has a lot of stuff in it, and we're looking to slim it down
where possible so it isn't so overwhelming.
One potential target is the Activities menu item, which has no real use
for a user who isn't using activities. We can never be 100% sure, but if
there is only one activity, it's a good bet the user isn't using the
feature. In this case, we can hide the menu item that shows the
switcher, because there's nothing to switch to!
Now, the switcher also has a button to add new activities, so it could
be argued that this change makes activities less discoverable. However
the feature is shown pretty prominently in the commonly-accessed
Workspace Behavior group in System Settings, so I think it's already
discoverable enough.
Test plan:
- Have one activity and right-click on the desktop > See no menu item
- Create a second activity and right-click on the desktop > See it
Here's how the menu looks now when there is only one activity:

cc @teams/vdg@ivan
An UI to manage Screen assignment of Containments, the main use case is to recover lost or inactive panels from a display that you can no longer access.
qml part: https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/618
related to https://phabricator.kde.org/T14346
CCBUG: 447044
Access the dialog from Toolbar in Edit Mode (Manage containments)


To show the dialog, simply enter in `edit mode`, then you can :
* See known displays and their panels and desktops, the dialog automatically update when adding/moving/removing a panel.
* Delete a panel or a desktop
* Recover a panel by moving it to an active display (click on move icon, then select the proper action in drop menu)
* Recover a desktop by moving it to an active display, in fact, this will swap it with th targeted desktop
* Modifications are automatically applied
What I've tested:
* Adding a panel, adding some applet on it. Then disabling its display, open the dialog and move it to an active display, restarting session, the panel is here with its applet.
* On another display, add applets (sticky note) on the desktop. Disable this display, open the dialog and move it to an active display, restart session, both desktop were swapped and you see the background (if different) and sticky note available.
The original condition will turn the text in the search field into an
unknown character. Move the logic to switch-case to fix the condition.
BUG: 448819
We had all of this wired up correctly in the backend, it just turns out
that we overwrite all messages with "Unlocking failed" immediately.
BUG: 428613
ListView will absorb the key events, so `Keys.onPressed` in
ClipboardPage will not receive the event. Instead we should connect
those key events to `arrowKeyPressed()`.
BUG: 448811
The behavior may cause unexpected results when the user spam press Del
in order to delete all characters in the search field, and find that
all items in the list are deleted.
It also causes pressing Del in the search field not deleting the fully
selected text.
BUG: 448738
BUG: 448739
PlasmoidPopupsContainer.qml has special code to handle merging headers
from applets if those applets use a PlasmaComponents3.Page instance as
their FullRepresentation. However this breaks for any applets that use
PlasmaExtras.Representation, which is a subclass of it that we have been
porting applets to over time, because it offers more features in a
single location. This caused the detection to break, so such applets
woudl have their headers improperly merged.
Explicitly detecting the use of PlasmaExtras.Representation as well
fixes it.
BUG: 438178
FIXED-IN: 5.24
No more one/many hints discrimination. They can all live happy together,
under single Repeater, using model directly. When the model will
migrate to a real Qt AbstractModel subclass (e.g. QML ListModel),
delegate's properties code will need to be adjusted again though.
Pass down laptop's lid action inhibition all the way from the top-level
file to reduce dependency on sketchy context properties and make
components more self-contained.
"Fix" as in "repair and make it right". This commit actually makes
header dynamic as it was always supposed to be. Wrongly fixed height
with dummy empty padding at the bottom was the result of incorrectly
applied anchors within Container[1]'s contentChildren.
[1]: PlasmoidHeading is a TabBar which inherits from Container and Control.
Technically it doesn't matter, since they are mutually exclusive anyway.
But for the upcoming refactoring it will be a bit easier to see what's
going on if they'll be close to each other.
Typically we have properties on top, then functions, then signal
handlers, then child items, then the onCompleted: block. The Battery
Monitor didn't conform to that, so this commit makes it do so. There are
no actual code changes; stuff is simply moved around for greater clarity
and style standardization.
f9e39815d ("applets/batterymonitor: Improve for desktop systems") changed the
plasmoid to use a plain icon instead of the CompactRepresentation if there are
no batteries.
While 471cc3745 ("applets/batterymonitor: fix CompactRepresentation") brought
the use of the CompactRepresentation back, the plain icon is still used.
For the case that there are no batteries and brightness controls available,
it fell back to "battery", which has no symbolic variant. Change that to use
the symbolic "video-display-brightness" as well.
BUG: 448520
In other places both properties are being set unconditionally, so this
patch just aligns it to other code. Also, possibly fixing scenario
where the Sources property might de-synchronize because the code
conditionally skipped updating it.