The two ways of disabling session management have the same impact on the
session being saved, but there is one behavioural side-effect that
turned out to be less ideal.
By disabling completely we don't follow the session manager telling the
application to quit. That's not something needed with the systemd boot,
but for the legacy boot effectively we were just closing applications by
ripping the X connection away from under them.
Some applications are bad at handling this and this led to a bunch of
crashes or dangling processes at logout.
This reverts commit 9be7dedb87.
CCBUG: 424408
We do this sometimes, but not consistenly.
The benefit is twofold.
First it improves the diff when adding new values since no existing line needs to be touched.
Second it prevents clang-format from collapsing the definition into a single line, which is undesired for large enums.
DesktopView's constructor calls PlasmaQuick::ContainmentView(corona,
nullptr), to initialise the parent class. nullptr being the parent.
In this case it makes sense as QWindow's overload of setParent must be a
QWindow, but memory management has to happen somewhere.
The current code is broken as the course of events is:
- we delete the containment
- an existing connect to containment deleted goes to
panelContainmentDestroyed
- this updates m_panelViews and calls deleteLater
- this deleteLater isn't run before other exit handlers
A popup needs to grab the keyboard and the pointer in order to dismiss
itself when another window is clicked. It works perfectly on X11.
On Wayland though, the compositor is responsible for dismissing popups
if some surface of another application has been clicked. Note that I
said "of another application." If user clicks some surface of the same
application, the compositor won't dismiss the popup.
If the application uses only QtWidgets, then the popup will be closed
as expected in both cases. But if the application uses both Qt Quick and
Qt Widgets, e.g. plasmashell, then the popup won't be dismissed if a
QQuickItem has been clicked.
It is a Qt bug, but for the time being, this change introduces an event
filter that monitors Qt::MouseButtonPress events and when needed closes
the active popup widget. This is a workaround.
CCBUG: 379635
This means on logout we'll be gracefully closed down.
All of these are closing down properly anyway, but this makes things a
bit more explicit in case you managed to log out at an awkward point.
Summary:
This brings numerous advantages such as:
- easier admin configuration with drop-ins, overrides and multiple
hooks throughout (and only having to learn one tool)
- session cleanup on exit, avoiding that occasional part where shutdown
hangs
- startup that actually knows when things are up
- race free autostart and DBus activation at once
- logs that rotate are split by service and usable
- resource management through slices and cgroups (the part I want)
Over the past 2 years I've been trying to tidy up and encapsulate the
relevant parts of startup into the binary plasma-session so that we can
just runtime swap out that one part and supporting both paths will be
easy.
Support is toggleable via cmake flag, as it seems like it should be a
distro decision, especially as we will require a specific systemd with
the xdg-generator.
KDED/kwin/other services are attached to the relevant repo.
Task T11914
Differential Revision: https://phabricator.kde.org/D28305
squash
ShellCorona is a messy class doing mulitple functions.
This patch splits out all telemetry code into a new class, meaning it's
easier to extend. Code remains the same.
Aggregate text for KRunner in DesktopView to prevent eating fast-typed characters.
CCBUG: 416145
partial solution: resolved for DesktopView, not resolved for running KRunner from shortcut
Test Plan:
When DesktopView is focused, typed characters show KRunner query.
All fast-typed characters should now appear correctly in KRunner window,
instead of only first typed character.
The HIG specifies that actions and menu items should start with action
verbs, and that ellipses should only be used for actions that open a
separate window to complete the action. This commit applies that to the
"Activities..." menu item.
Qt 5.15 introduces a new syntax for connections.
Framework code can't port away due to having to support Qt5.12 which
does not include the new syntax.
This filters out the category.
We should remove this once we depend on Qt5.15 in frameworks.
BUG: 424259
Currently updating the DesktopView geometry and emitting signals notifying of changes to screen geometry are connected independently to QScreen::geometryChanged(), while screenGeometry() as well as availableScreenRect() and availableScreenRegion() depend on the DesktopView geometry. The incorrect order of slots being called causes the task manager to behave incorrectly on screen configuration changes, displaying either no windows or windows from a wrong screen. This also affects the desktop pager widget when configured to show the current desktop only.
BUG: 373075
The volume setting in plasma-pa can exceed 100%. Currently the display is limited to 100%, which can result in a mismatch between what is shown in the applet and in the OSD.
This adds an overload to volumeChanged to keep the old one compatible given it is used by e.g. kmix
the geometry property remained broken for all plasma5 lifetime.
reading it makes sense, writing it not so much (ad it depends ffrom
containment to containment)
reading works, writing stays noop (for max compatibility)
I don't understand why QQmlDebuggingEnabler prints a warning, it's no
less secure until other command line args are passed.
However the warning is scary, so lets put a guard on it.
BUG: 422228
Summary: When disconnecting the primary screen on a dual monitor setup and reconnecting it back, the available size of the secondary screen desktop may be reduced to the thickness of the primary screen panel, as can be seen by dragging a rubber band or trying to move some widgets. This apparently happens because the QML bindings had last been updated at the short moment when both panels were temporarily placed on the same screen. Update availableScreenRect therefore when a panel changes its screen.
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D29831