use a property of the effect itself to store the search text
so all the views will search for the same thing at the same time.
BUG: 455353
FIXED-IN: 5.25.1
At the moment, it's possible to activate a qtquick effect while another
qtquick effect is already active, we have code that prevents fullscreen
effects overriding each other, yet that still happens.
The reason for that behavior is that the gesture recognizer will mark
all gestures as started when user starts swiping on touchpad and cancel
gestures as more swiping occurs. This can mistrigger toggling logic in
the window view effect and the desktop grid effect, etc.
In order to make handling of gesture cancellation correct, we could
check whether user has swiped enough to deactivate window view, or
desktop grid. This change tries to implement exactly that.
As a side-effect, it also allows toggling the effect with the same
gesture. However, we should make cancellation gestures opposite of
activation gestures, i.e. if 4 swipe up gesture is used to activate an
effect, then 4 swipe down gesture should be used to deactivate the
effect.
After internalWindow->present() is called, we cannot guarantee that the
current opengl context hasn't changed. If kwin changes the current opengl
context, bindContextFBO() can crash because there may not be current
QOpenGLContext.
BUG: 455435
Instead of using a DmaBufAttributes instance to communicate the settings
to create a new dmabuf, use a smaller DmaBufParams class that only
contains the information we need after destroying the BO.
Don't disable the main drag handler when canclosewindows is disabled,
that one is not used to close windows but to drag them on other desktops or screens
BUG: 455268
At the moment, blur shader code is barely readable because the code is
constructed at runtime.
Since ShaderManager handles opengl context profiles when loading shaders
from files, we can improve code readability by splitting shader code in
the corresponding files.
Note that ShaderManager adds "precision highp float;" for convenience
(whether using "highp" is okay is up for debate).
Redirect key events to search field so user can search for windows
without manually focusing the search field. It matches the behavior of
the overview effect.
BUG: 455100
In the case of an assert, for example a wayland error Xwayland will
exit, but with an exitStatus of "normal exit".
We also trigger a shutdown should kwin encounter an error on the X11
side, this would be a clean exit from an XwaylandLauncher point of view.
It makes sense to try to restart.
Deliberate shutdown is handled by destroying the XwaylandLauncher. This
means it's not an issue for final kwin teardown.
If a window is added and then the current virtual desktop changes, we
can encounter the following situation:
* desktopChanged signal is emitted, and the slide effect starts
animation. SlideEffect::prepareSwitching() will setup windows; note
that the new window may be present in effects->stackingOrder()
* windowAdded signal is emitted, and slide effect tries to ref the
window again
In order to ensure that there's only one reference, maintain visibility
refs in a hashtable.
BUG: 455237
Currently, if the screen edge is blocked and the cursor is inside its
approach geometry, kwin is going to paint screen edge glow.
It doesn't look good and it can have some performance penalties with
fullscreen video games because the direct scanout path will be blocked.
BUG: 454503
At the moment, dmabuf importing is scattered all over the place in kwin.
It would be great if we had one function that takes dma-buf attributes
and returns an EGLImage if successful.
As the first step, make linux-dmabuf-v1 implementation provide dmabuf
attrs compatible with KWin::DmaBufAttributes.
QSize() will construct an invalid size. An invalid size has width and
height set to -1. In other words, QSize() != QSize(0, 0). This can create
issues when computing the bounding rect of a surface that has invisible
subsurfaces.
For example, if the subsurface rect is QRect(0,0 -1x-1), the top-left
corner of the bounding rect will be affected.
In order to make computation of the bounding rect robust, initialize the
surface size to 0 explicitly.
BUG: 454535
Originally, DeformEffect was meant to be used in effect that deform
windows, but its usage has become wider than anticipated. This change
renames the DeformEffect to OffscreenEffect to accommodate for that.
In Gtk's text-input-v3 implementation it expect done to update the
client serial after every commit. Though it is unclear whether this is a
protocol requirements, do the same thing like mutter for more
compatiblity, especially Gtk3 is in EOL not likely to be patched any
time soon.
To do so, we will need to keep track of the last active preedit,
otherwise only send_done() will clear the preedit.