When rendering a frame takes longer than a refresh period, allow rendering to
happen before the previous frame is presented. This way the effective refresh
rate is increased, without increasing latency or impacting frame pacing more
than necessary
Plasma::Dialog contains logic that we don't want for a kwin window and
is considered deprecated. Dialog uses the width of the main item which
results in an unavoidable binding loop.
PlasmaWindow allows us to propagate implicit sizes upwards correctly.
BUG: 420757
kglobalacceld needs to process all key events to detect whether
a modifier only shortcut has been triggered.
On the other hand, when using Meta+Space keyboard layout switching
shortcut, we will get the following key syms (not native scan codes)
- press meta: Meta_L
- press spacebar: Super_L
- release meta: Meta_L
- release spacebar: Space
The fact that xkb reports Super_L when the spacebar is pressed trips
modifier only shortcut detection in kglobalacceld, and it's likely
that kickoff will open after pressing Meta+Space to switch the keyboard
layout.
In order to prevent that, kglobalacceld needs to see all key events
even with invalid key codes. As an alternative, we could explore the
possibility of using native scan codes instead of mapping keysyms to
key codes, but that needs thorough analysis, which we have no time
for.
The check was introduced in 4403e86acc.
After that check is removed, the test still passes.
This is the backend that will be used by the portal to enable
the functionality of the input capture portal.
When the cursor tries to move out of the workarea across a barrier
that the portal registered all input events are filtered out
and forwarded via eis.
The cube effect has a placeholder which can update the delegate at
runtime. There's an "add desktop" button which then might give us 3
virtual desktops. As a general rule any setter exposed via a declarative
API should always perform the setting.
Reloading has to be delayed because otherwise we unload the caller.
BUG: 486839
With this change the preferred buffer scale, transform and color
description properties will be latched to xdg shell configure events.
This should ensure that the clients are told the preferred buffer
scale before the first configure events.
This makes it a bit more conservative for reducing latency, which decreases the
amount of dropped frames in desktop usage a lot (by 13x on my desktop, 2x on my laptop)
pointerEvents contain all motion events, the xwayland filter is only
concerned with forwarding clicks. Right now we would update an invalid
button state constantly. It did nothing harmful but was still a bit
silly.
An EDID can contain zero or more detailed timing definitions, which can contain
more precise physical dimensions of the screen (in millimeters, as opposed to
centimeters).
The Xorg server has similar logic for determining the physical screen size from
the EDID: pick the first sane size from the detailed timing definitions, and
fall back to the screen size given in the "Basic Display Parameters & Features"
section.
BUG: 486585
Apparently people have differing ideas of what "vertically" and
"horizontally" mean, and some feel that this wording contradicts the
icon.
That's not accurate, but the wording is admittedly a little a bit
ambiguous. We can clarify this by using super duper explicit
terminology that always matches the icon.
BUG: 475103
FIXED-IN: 6.1
If the slow transition is scheduled slightly earlier before m_next.first,
don't skip the "m_prev.first <= todayNow && todayNow <= m_prev.second" branch.
Also explicitly handle the case when resetSlowUpdateTimers() gets called
after m_prev.second, i.e. the previous transition has finished running.
Due to QTimer sometimes firing a tad bit early, transitions get skipped, or we
end up in the "Error in time calculation" branch. This commit improves timer
handling to avoid this.
We do not snap to docks (i.e. panels) since the ones we
actually want to snap to (i.e. always visible ones) will
restrict the workspace area, and the window will snap to
that, effectively snapping to the panel too. Explicitedly
avoiding panel snapping solves any possible issue of
floating panels, since they change their size when a window
gets near them.
The communication between the compositor and plasmashell is asynchronous.
It's possible that plasma can call get_window_by_uuid before it is notified
that the window has been closed. There's no any way around with the
current design of the protocol. So printing a warning message is
unjustified. This fixes kwin's logs being full of "could not find window"
warning messages.
After receiving a drop a client should call data_offer.finish
to tell the source it's done using the drop.
A client could delete an offer after drop before calling finish.
This can happen with misbehaving/buggy or malicious Wayland clients.
A real case was found in the wild with Chromium, as described in the
linked bug.
In this situation we should let the source know the dnd is finished
as there are no other transfers than can take place.
We don't want to universally send this in all data offer destructors
only, offers that are deleted post drop so the flag on the source is
exposed.
BUG: 482142