The fake drag-and-drop events caused by the panel reuse the real event's
mimeData, and were handled asynchronously. By the time the fake event
has been dispatched from the event loop, the mimeData may already have
been freed. Send the fake events synchronously again.
A guard is added to avoid the original potential bug of infinite recursion.
BUG: 398440
by using KStartupInfo::setNewStartupId it properly activateswithout
getting blocked by Kwin focus stealing protection also when remotely
invoked from dbus
- Port away from cmake macro macro_bool_to_01, which was being used from
the copy of that macro that KDELibs4Support has
- Clean up redundant CMake variables
if we know the conector name of a qscreen, use it to recover the internal
integer screen id.
used by external scripts to do things to the "current" containment
for instance systemsettings invoking the wallpaper configuration
dialog for the same containment for the screen systemsettings currently resides in
Wants says we should bring ksmserver up, but by default that could be in
any order, we need to define it. kcminit also potentially exports
environment variables.
This was written with the correct order in-mind but the wrong keyword
used. We don't need "Wants" as plasma-core.target already defines that
we will be loading them along with plasmashell.
It is important that ksmserver is up and has completed exporting the
SESSION_MANAGER env, otherwise plasmashell will not propogate it so
applications it launches introducing an X session regression
createWaitingPanels is not guaranteed to create all of them.
Those which have a desktop not ready yet will go back to waitingpanels until new turn.
This scenario sometimes happens during first run scripts or update ones, causing a crash in those cases
Panel struts may need to be updated when screen configuration changes,
even when the panel isn't resized or moved. Example: screen below the
panel is removed.
Currently the struts are only sometimes updated, that is when
ShellCorona::reconsiderOutputs is called. This is timing dependant since
ShellCorona::addOutput connects QScreen::geometryChange to it, and
geometryChagned signal can arrive before addOutput is called, in which
case the struts aren't updated.
I am not sure if this behaviour is intended, but it's best to not rely
on it. Instead lets just update the struts when screen size changes like
we used to.
There was a previous commit d66d6d57 that is similar, however it got
lost when the dependency on KScreen was removed.
Since now we rely on QScreen, we need to connect the QScreen signal
every time it changes, hence the change being in setScreenToFollow.
There is an error handling path when we fetch the relevant config()
```
KConfigGroup PanelView::panelConfig(...
{
if (!containment || !screen) {
return KConfigGroup();
}
```
which we indiscrimiately call parent() on.
This patch guards that case, which is presumably screen being
temporarily null.
This code is also Plasma 5.8 compatibility fallback, so arguably we
could get rid of it.
BUG: 425711
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.