This adds `m_blockRestorePreviousWindow` to avoid restoring focus to the
panel, and replace QHash with QMap to save panel orders.
CCBUG: 453166
CCBUG: 352476
Instead use KRuntimePlatform::runtimePlatform from KCoreAddons.
The defunct code to set the runtime platform was removed. This value gets set using ENV variables.
Task: https://phabricator.kde.org/T15492
On Wayland, the primary screen notification and
QGuiApplication::screenAdded signals are desync. The primary output
watcher addresses that by emitting its primaryOutputNameChanged() signal
when the corresponding QGuiApplication::screenAdded() signal is emitted.
However, since the primary output watcher processes the screenAdded
signal before ScreenPool, it can emit the
ScreenPool::primaryScreenChanged signal before ScreenPool::screenAdded
signal that can confuse the ShellCorona.
This merge request adds support for additional Global Theme layout settings to
be set in KCM, if the selected theme supports them:
- (controlled by Desktop Layout switch) Borderless Maximized Windows
- (own switch) Titlebar Buttons Layout
Ones with their own switch also have new checkboxes for themselves in More Options in
the KCM, and the values for all the added options, in the new `layouts/defaults` file
of Global Themes, are made to match their KDE Plasma config files counterparts in names
and values.
Example of a `layouts/defaults` file in a Global Theme:
```
[kwinrc][org.kde.kdecoration2]
ButtonsOnLeft=M
ButtonsOnRight=IAX
[kwinrc][Windows]
BorderlessMaximizedWindows=false
```
NOTE: If a Global Theme doesn't supply `BorderlessMaximizedWindows`, it'll be turned off automatically when applying a Desktop Layout to prevent issues.
With the information about the active screen we can make an educated
guess about where the attention of the user is and where they could
expect the launcher to open. If on the screen no launcher could be
activated, look at all launchers. Also remove the requirement for
launchers to have a shortcut. This is needed to make this feature
work reliably and should reduce the instances of "Meta key stopped working"
happening in general.
CCBUG:447962
BUG:391322
BUG:444343
BUG:437979
Max and min are calculated from two completely different sources.
There's scope for them to not be the expected way round.
We have an assert reported on this line due to a subtle qBound ->
std::clamp porting difference on GCC with debug flags on.
BUG: 454064
Shared contexts allow us to share textures and vertex buffers between
contexts (windows) this allows us to reduce memory in popups and alike.
To fully make use of this requires some follow up work in
ManagedTextureNode for FrameSVG, but we should sitll get some OOTB.
If shared contexts are not supported this fails gracefully - though we
are relying on shared contexts within kwin for a release without issue.
It also should fix WebGL inside WebViews.
BUG: 448299
These two code paths for vertical and horizontal orientations used two
different functions to clamp values. This commit makes them consistent.
Amends a3943400d5.
Plasma::Applet::config() returns a "/Configuration" group, but the
dumpCurrentLayoutJS DBus method saves all applets' config from root,
so when we need to save some value through scripting api it will
always prepend "/Configuration"
Given that the wayland protocol does not have window positions a recent
change to Qt development branch avoids having a mismatch of positions
and tells client code the window is at the topleft of the screen. This
fixes multiple bugs.
Unfortunately this breaks a few usages within plasma where a
side-channel sends that absolute positional information over a bespoke
protocol. Currently we proxy this all through QWindow geometry where the
new Qt behaviour will throw is askew.
Whilst our longterm plans are to find future options away from the
plasmashell protocol we may as well have our Qt6
build work given the patch is trivial and harmless.
It also allows for potential backporting if our software is
already secured against issues. Hence the cherry-pick.
In task manager, switching between icon task manager and text task manager
loses the old settings, which is inconvenient. This copies the old
configuration to the new applet to fix that behavior.
BUG: 355588
FIXED-IN: 5.26
After location is set, one layout script will usually start adding widgets.
It's required to emit formFactorChanged() to update plasmoid.formFactor bindings
in QML side to avoid Layout issues.
See isHorizontal in plasma-desktop/containments/panel/contents/ui/main.qml
The formFactor has been set, either by `ShellCorona::addPanel` or the
ctor of `ContainmentPrivate::ContainmentPrivate`, so it's redundant to
set the default value here again, or the panel will be added to the top
edge again and again.
In panelview.cpp, the old window focus is restored when switching to
Passive status. This fixes the behavior by setting the panel status to a
status that is not AcceptingInputStatus.
BUG: 454729
CCBUG: 352476
FIXED-IN: 5.25
This adds an option to set the accent color from the current wallpaper.
The way it works is that it exposes some DBus calls; if a wallpaper plugin
supports wallpaper accent colors then it should say so by this DBus call
when starting up and also should say which wallpaper is being currently
used (for the purpose of extracting an accent color from it) or set an
accent color itself. After that it should keep declaring the wallpaper or
set accent color whenever wallpaper changes or whenever the plugin author
thinks it is appropriate to say so.
There is already an implementation of the color extracting algorithm which
the plugin can either use, or else set whatever accent color it wants. The
necessary DBus calls for the official image and wallpaper plugin are
implemented, so they should work out of the box.
BUG: 444676
FIXED-IN: 5.25