As it was pointed out in 6acf35e4cc, it is
better to return raw pointers than qpointers because returning a qpointer
is equivalent to constructing a new one.
Key repeat is the default we had in 5.20, albeit under a different key.
This changes for the key repeat was reverted elsewhere, but we need to
adjust the wayland default.
If user has switched between virtual desktops, only X11 windows will be
taken into account when kwin decides what window has to be activated on
the new desktop.
With this change, Wayland clients will be considered too.
Plasma-workspace currently starts kwin_wayland before afterwards
continuing to spawn the full session, through whatever mechanism.
We ultimately want to just have systemd manage everything all at once,
but this was not realised in time for 5.21 due to a problem of
propogating environment variables.
By removing this file we go to a working state with the option enabled,
and can build on it for the next release.
BUG: 432189
After lowering the message severity for the KWIN_CORE logging category,
it has been found that the Workspace calls the updateDecoration() method
for every mapped popup surface.
Since the XdgPopupClient doesn't implement that method, a warning message
is printed every time a popup is mapped.
Given that XdgToplevelClient updates the decoration when needed, we can
remove the call to the updateDecoration() method.
Warning messages are not the kind of messages that should be ignored,
they indicate that something is off or wrong.
Also, this makes triaging bugs easier as we no longer have to ask people
to run kwin with the QT_LOGGING_RULES environment variable set.
With xdg-toplevel windows, the value of the "no border" property can be
sometimes out of sync with the fact whether the window is decorated. This
may result in Deleted windows being frameless.
In order to address that issue, we need to store the current value of
AbstractClient::isDecorated() during the construction of Deleted.
If all outputs have been disconnected, the screensQueried() signal won't
be emitted and Screens::count() and Screens::size() won't be updated.
The signal is not emitted to ensure that kwin is initialized properly when
there are no outputs.
Unfortunately, this breaks repaint scheduling code as it doesn't take
into account that the Screens class may lie in rare cases.
The drm backend should probably create a placeholder screen in case all
physical outputs have been disconnected, but in meanwhile, let's work
around this issue by porting the scene to the output api in the Platform.
Some applications set their own geometry after start,
which overrides the initial rule settings for placement:
position, size and initial placement.
This happens now more often, after introducing the
"Remember app last position" feature for KXMLgui apps.
There is a mechanism to avoid that, by Forcing the rule property
"Ignore geometry", but it is unknown to many users.
This MR adds a hint when some rule properties might not be
respected by the application, so users can set this property
and hopefully avoid bug reports.
BUG: 428781
Improves portability by avoiding the non-standard 'uint'. For example
this fixes building with musl libc:
".../kwin_wrapper.c:45:9: error: unknown type name 'uint';
did you mean 'int'?"
A situation meant we want to only enable the new keyboard applet by
default on wayland, using the legacy one from the X11 daemon on X11.
We need a unique service name so that we can use DBus activation on it.
QMap::value() failed to find existing keys when tow ComparablePoint
shared the same x but not the same y.
This commit improves the operator<() to fix that.
Previously code was if socket fd is greater then 0, then we start
process, but new code in 05ebe676d2 reversed logic. So this
made it not start input method at all.
On that signal, we asquare the new layout anyway all over the places.
Better just pass it along with the signal instead.
Also it's in-line with DBus API signal.
The base handle for layouts in libxkbcommon is an index. Let's follow
this notion in our API to set/get layout, instead of using it's name as
an ID.
On the way, do cleanup. Following methods are removed as not needed any
more:
- Xkb::layoutShortNames()
- Xkb::layoutNames()
If user set custom name for the layout, country flag is not displayed.
Instead, Display Name is shown in the applet.
This reveals shortcomings in current DBus API design.
We need more data to pass over DBus to fix this.
Then, multiple improvements are possible:
- fix aforementioned bug
- add flags to context menu
- display correct translated Layout Name in the context menu
- simpler, cleaner DBus API and applet implementation
- etc.