Commit graph

3614 commits

Author SHA1 Message Date
David Edmundson
1e62fe99bd Remove superfluous area check
If area.contains(geometry.topLeft()) is false this does nothing anyway
2022-06-14 11:34:50 +00:00
Vlad Zahorodnii
411607897f core: Make screen area safer in Workspace::clientArea()
If the given output or desktop is not in m_screenAreas, [] operator can
crash.
2022-06-14 11:09:58 +00:00
Vlad Zahorodnii
ac97e282fc scripting: Handle bad output and desktop ids gracefully
Don't crash if a script has provided bad screen or desktop id to
clientArea().

CCBUG: 449957
2022-06-14 11:09:58 +00:00
Xaver Hugl
3c0ed5643b effects/windowview: do close animation after gesture ended 2022-06-14 08:47:39 +00:00
Rachel Mant
fd18401dbf Introduced a new setting for the task switcher - OrderMinimizedMode - and implemented the tabbox logic for it 2022-06-14 07:57:01 +00:00
Rachel Mant
9e9e05f865 Cleaned up the definition of the stickyClient local 2022-06-14 07:57:01 +00:00
Rachel Mant
0f2fe33ed7 Refactored out the StackingOrderSwitching logic for the tabbox client model 2022-06-14 07:57:01 +00:00
Rachel Mant
93f322d262 Refactored out the FocusChainSwitching logic for the tabbox client model 2022-06-14 07:57:01 +00:00
Emilio Cobos Álvarez
7e1617c280 [x11] Implement _GTK_SHOW_WINDOW_MENU.
BUG: 454756
2022-06-14 06:55:07 +00:00
l10n daemon script
fefd730273 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-06-14 01:52:48 +00:00
ivan tkachenko
ecc0131829
Port away from Kirigami.Units.devicePixelRatio
It's deprecated and always 1
2022-06-14 01:25:53 +03:00
ivan tkachenko
8b412aa721
Fix QML/JavaScript code style & bump imports 2022-06-13 16:58:53 +03:00
ivan tkachenko
2434ff10a2
Use JavaScript strict equality === 2022-06-13 16:58:53 +03:00
Vlad Zahorodnii
4e32ea20d6 Disable screen edge approach area if the edge is blocked
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
2022-06-13 12:35:46 +00:00
Aleix Pol
29946be29f backends/wayland: Fix window title 2022-06-13 14:33:43 +02:00
Vlad Zahorodnii
9d916fa60d wayland: Use shared DmaBufAttributes type 2022-06-13 10:22:29 +00:00
Vlad Zahorodnii
7ecdbad4f1 wayland: Sync DmaBufAttributes 2022-06-13 10:22:29 +00:00
Vlad Zahorodnii
2761df727d wayland: Refactor dmabuf attributes in linux-dmabuf-v1
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.
2022-06-13 10:22:29 +00:00
Vlad Zahorodnii
00df0a7019 wayland: Explicitly initialize surface size to 0
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
2022-06-13 12:25:28 +03:00
Vlad Zahorodnii
f9c20bb83e Rename DeformEffect to OffscreenEffect
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.
2022-06-13 07:06:09 +00:00
l10n daemon script
ef1d97ac86 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-06-13 02:35:40 +00:00
l10n daemon script
9bb1a4401a SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-06-12 01:44:59 +00:00
Weng Xuetian
a74c436156 Always send a done after commit for text input v3.
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.
2022-06-11 20:24:35 +00:00
Aleix Pol
dc9c431fe3 xwayland: Listen to changes in the Xwayland.Scale setting 2022-06-11 13:58:04 +00:00
Aleix Pol i Gonzalez
5bea508590 drm: Readability, no need to copy the modifiers vector 2022-06-10 20:54:17 +02:00
David Edmundson
52900dc2d6 [wayland] Fix surface unit test
Behaviour was fixed in c3f5f8ce01. If an
item starts at 0,0 and is 100 pixels wide in normal geometry the 100th
pixel is not inside the rectangle.

SubSurface::testSurfaceAt was adjusted correctly but this was missed as
we test the same thing twice!
2022-06-10 14:00:58 +00:00
Alexander Lohnau
9419acc1ff Fix KWin scripts KCM not writing it's pending states to config
BUG: 455015
2022-06-10 06:55:55 +02:00
l10n daemon script
095c7fd3a4 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-06-10 01:42:11 +00:00
Xaver Hugl
baf0f7b8d2 backends/drm: add fallback for systems without gbm modifier support
It was missing for lease outputs, which causes all atomic tests to fail

BUG: 454961
2022-06-09 14:31:15 +02:00
David Edmundson
c3f5f8ce01 [wayland] Fix SurfaceInterface::surfaceItemAt
QRectF::contains includes all edges. If two subsurfaces are next to each
other ::contains will treat it as having a singularity where a value is
on 2 subsurfaces rather than either one of the other, which isn't what
we want for our purposes.

The unit test is extended but also featured some wrong values, the
biggest clue that it was wrong was that we used different test
co-ordiantes for surfaceContains and inputContains.
2022-06-09 09:43:13 +00:00
l10n daemon script
c8b4937f81 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-06-09 02:08:35 +00:00
David Edmundson
419c0b81fd Support an alternative harcoded scale for X
Anything in xcb_ structs are always in X local, all member variables
aside from buffers are in kwin local space.

This patch ignores a few paths that are not relevant on wayland.
2022-06-07 11:58:26 +01:00
David Edmundson
d70bd2435b Introduce client level scale overrides
This allows for compositor managed different co-ordinate space between kwin's
logical co-ordinate space and a client's logical co-ordinate space.

When combined with a modified kwin!1959 this allows us to set a DPI in xrdb and
mark all xwayland windows as being 2x (or other) and avoid upscales for xwayland
clients in a way that doesn't impact other wayland clients or require
third-party changes. Any use of fractional values is in layers we control
instead of over the wire. kwayland-server is the right place for this
abstraction as we need Outputs to differ on a per resource basis. Something we
can't control from within kwin.

Right now only protocols used by Xwayland are covered. If we covered
remaining protocols we can offer user-control on all remaining clients which
could open up other possibilities such as a user controlled dynamic resizing,
or adapt to possible future protocol changes with wayland scaling.
2022-06-07 08:33:55 +01:00
l10n daemon script
51999deadb SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-06-07 02:21:00 +00:00
Alexander Volkov
00379da3d3 Ignore fake input devices when detecting tablet mode
Otherwise launching firefox, which in turn leads to launching of
xdg-desktop-portal-kde, disables auto-rotation.
2022-06-06 17:25:37 +00:00
Marco Martin
3d0beae828 Drag windows between screens in WindowHeap
Allow dragging windows between screens, using a placeholder thumbnail item to
render part of the thumbnail on the other screen.

BUG: 283333
BUG: 453996
BUG: 448566
2022-06-06 13:48:59 +00:00
Marco Martin
6abce1529a Put the hostpot as the press position
we should drop the window on the desktop under the cursor,
not under the center of the thumbnail

BUG:454584
2022-06-06 11:39:28 +00:00
Xaver Hugl
4874066423 port many Qt shared pointers to standard smart pointers
There are a few benefits to using smart pointers from the standard library:
- std::unique_ptr has move semantics. With move semantics, transfer of ownership
can be properly expressed
- std::shared_ptr is more efficient than QSharedPointer
- more developers are used to them, making contributions for newcomers easier

We're also already using a mix of both; because Qt shared pointers provide
no benefits, porting to standard smart pointers improves consistency in
the code base. Because of that, this commit ports most of the uses of QSharedPointer
to std::shared_ptr, and some uses of QScopedPointer to std::unique_ptr
2022-06-04 16:57:29 +00:00
l10n daemon script
138000020f SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-06-04 01:44:31 +00:00
Nate Graham
701fc52a4a effects/desktopgrid: re-add shortcuts to add and remove desktops
This got lost in the QML port.

BUG: 451848
2022-06-03 15:34:27 +00:00
Nate Graham
529c3c29d3 Change global shortcuts to use the Meta key by default
The current shortcuts could conceivably override app shortcuts, since
they don't use the Meta key. The following changes are made:

Switch keyboard layout:               Ctrl+Alt+K   -> Meta+Alt+K
Activate window that wants attention: Ctrl+Alt+A   -> Meta+Ctrl+A
Kill Window:                          Ctrl+Alt+Esc -> Meta+Ctrl+Esc

These are safe to change in the code rather than adding new ones and
keeping the old ones around for compatibility's sake because
KGlobalAccel::setDefaultShortcuts by default preserves old shortcuts
when they are changed, and we aren't overriding that behavior here. So
only new installs will get the new shortcuts and existing user installs
will be untouched.
2022-06-02 07:20:54 -06:00
Aleix Pol
9db4fd1a17 DmaBufTexture: The modifier is a global dmabuf attribute
We don't get one per plane, but one per allocation.
2022-06-02 03:42:13 +02:00
Aleix Pol
51bfadab63 backends/wayland: Fix behaviour when disabling outputs
Makes sure disabled outputs are reported as such, leaving behind the
assumption that all outputs are always enabled.
Ensures the corresponding outputEnabled/Disabled signals are emitted.
Updates the window title to reflect the output state.
2022-06-01 10:53:03 +00:00
l10n daemon script
465aa7edee SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-06-01 01:57:49 +00:00
Xaver Hugl
e7365bf43f backends/drm: don't do direct scanout if transformations don't match
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2128>
2022-05-31 07:10:08 +00:00
l10n daemon script
0a7ae31e4c SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-31 02:02:56 +00:00
David Edmundson
cd234c96f7 [tabletmodemanager] Avoid unnecessary signalling
oldEffectiveTabletMode was currently unused
2022-05-30 19:38:26 +01:00
David Edmundson
87fbdd04fe [xdgshell] Remove unused captured variable 2022-05-30 19:37:46 +01:00
David Edmundson
bc4d1cf129 [libkwineffects] Fix minor compiler warnings 2022-05-30 19:37:24 +01:00
David Edmundson
2662d20da1 [input] Remove unused local variables 2022-05-30 19:36:46 +01:00
Xaver Hugl
671672871b LogindSession: adjust warning when openRestricted fails
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2482>
2022-05-30 12:44:22 +00:00
Luca Carlon
2d563dc63f AppletPopup window type should accept focus.
AppletPopup window type should accept focus, behaving like other window types like
Dock. At the moment it is instead behaving like notification, which seems wrong.
This should also fix a failing unit test.
2022-05-30 09:41:01 +00:00
Luca Carlon
7865a9b355 AppletPopup window type should be shown on all desktops.
AppletPopup's are typically supposed to be attached to the panel and
should remain visible when the virtual desktop is changed. If the
AppletPopup is pinned and the virtual desktop is changed, without
this patch, the window does not remain attached to the panel. This is
how AppletPopup was supposed to work even according to the unit test
which currently fails.
2022-05-30 08:36:52 +00:00
Malte Dronskowski
d8da0c7708 Fix typo in latency policy
The lowest latency setting wasn't applied because the internal 
implementation contained an excess 'e' in comparison to the setting 
exposed to the user

BUG: 453694
2022-05-29 18:07:37 +00:00
l10n daemon script
450d8e286a SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-29 01:45:37 +00:00
l10n daemon script
df7e386714 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-28 02:21:02 +00:00
Luca Carlon
da0dd1e367 Support new AppletPopup window type
See the discussion in https://invent.kde.org/frameworks/plasma-framework/-/merge_requests/500.

BUG: 411462
BUG: 332512
FIXED-IN: 5.25
2022-05-27 21:49:37 +00:00
Xaver Hugl
615cd352fb add autotest for touchscreen gestures 2022-05-27 17:49:59 +00:00
Xaver Hugl
61efc4c2e1 input: don't fail touchscreen gestures with invalid physical size 2022-05-27 17:49:59 +00:00
Xaver Hugl
9957f8c84a input: fix touchscreen gesture detection
When a gesture is cancelled because of the distance between fingers or the
time it took to register them all, no gesture has been taken yet. In that
case, the canceling would never be ended, effectively disabling all touchscreen
gestures.
2022-05-27 17:49:59 +00:00
Vlad Zahorodnii
97a82c97df effects: Fix QQuickItem::mapToGlobal() in qtquick effects on wayland
On Wayland, we create a dummy window to fix HiDPI issues. At the moment,
the QQuickRenderControl::renderWindow() returns a fixed offset 0,0.

As it turns out, QQuickItem::mapToGlobal() will poke the
QQuickRenderControl::renderWindow() function to map the specified point
to the global coordinate space.

Since the renderWindow() function returns hardcoded offset, the
mapToGlobal() function is sort of broken in fullscreen effects.

In order to fix mapToGlobal() on Wayland, this change makes the
EffectQuickRenderControl return the position of the associated
OffscreenQuickView.
2022-05-27 15:43:00 +00:00
Xaver Hugl
f86f159fd5 backends/drm: fall back to a software cursor if drmModeAddFB2 fails
CCBUG: 453860
2022-05-27 15:24:27 +00:00
Marco Martin
f6db8b1178 Toggle all desktop on middle click
restores the behavior of the old desktop grid which toggled on all desktops on middle click

BUG:454001
2022-05-27 08:29:57 +00:00
Vlad Zahorodnii
6180a9b144 effects/zoom: Fix repainting with zoom factor of 1
When zoom factor is 1, the zoom effect will paint the scene in an
offscreen texture, but not actually paint the textures on the screen.

Zoom factor can be 1 when the effect has been just stopped.

BUG: 454407
2022-05-27 08:14:21 +00:00
Marco Martin
207c59002b Properly reset offToCornerId and apertureCorner when the effect closes
When the effect closes, all the extra data attached to the window
(offToCornerId and apertureCorner properties) are not valid anymore
and need to be reset right after the animation end.
also manage the two edge cases where a window either appeared or
got minimized while the effect was running to either show it or not

BUG: 454280
2022-05-27 08:00:32 +00:00
Vlad Zahorodnii
1f6d9d482f effects/zoom: Schedule a fullscreen repaint if stopped zooming
On Wayland, screens are repainted independent of each other. If zooming
animation stops on one screen, other screens may still be stuck in the
zoomed state and therefore result in potential flickering. Issue a full
screen repaint when zooming stops to ensure that other screens are
repainted with "unscaled" contents.

BUG: 454407
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2472>
2022-05-27 07:27:06 +00:00
Vlad Zahorodnii
f3b291bce0 Make TimeLine API ergonomic with presentation timestamps
Currently, if you want to use TimeLine, you need to track the last
presentation timestamp which boils down to carrying some boilerplate
code.

The current situation can be improved by making TimeLine work with
presentation timestamps.

Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2473>
2022-05-26 17:10:07 +00:00
Vlad Zahorodnii
6a5173b6c4 effects/zoom: Use GL_LINEAR filter
The magnification filter was changed to GL_NEAREST with the reasoning
that "pixel granularity" would be more correct. Perhaps that was not a
bright idea. Change it back to GL_LINEAR.

BUG: 454408
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2471>
2022-05-26 10:11:01 +00:00
Kai Uwe Broulik
b6001d12cc backends/x11/windowed: Don't create cursor pixmap from null image
There's no point and it results in a "QImage::scaled: Image is
a null image" warning.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2469>
2022-05-26 06:51:46 +00:00
Kai Uwe Broulik
b062d09fdc backends/x11: Support resizing the windowed output
In response to a XCB_CONFIGURE_NOTIFY on the output window, the new size
is set as mode and the output layer buffer is recreated.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2459>
2022-05-26 06:38:32 +00:00
Vlad Zahorodnii
486d229cae effects/desktopgrid: Fix config group name
The config group is formed as "Effect-" + plugin id, i.e. "desktopgrid"

Config migration from DesktopGrid to desktopgrid is already handled by
a kconf_update script.

BUG: 454102
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2464>
2022-05-25 18:11:57 +00:00
Kai Uwe Broulik
b018dd3204 qpa: Provide a QPlatformNativeInterface
Under Gnome/Unity/XFCE, but not Plasma(!), QFontconfigDatabase queries
the platform native interface for certain font settings
(e.g. antialiasingEnabled). Without a QPNI this would crash KWin
as soon as it tried to query for fonts.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2468>
2022-05-25 16:37:32 +00:00
Vlad Zahorodnii
f2be602266 kcms/touch: Fix crash
"effects" is a typo, we need to populate "m_scripts"

BUG: 454360
Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2465>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2465>
2022-05-25 10:26:03 +00:00
Vlad Zahorodnii
e57be93108 backends/drm: Specify clear color for cursor plane
Otherwise the results are undefined.

BUG: 454068
Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2466>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2466>
2022-05-25 09:45:18 +00:00
Vlad Zahorodnii
7c849ee05a Use font metrics to compute corner offset
The problem with the current approach is that it doesn't work reliably
on wayland. Outputs can have different pixel density, etc.

Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2461>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2461>
2022-05-25 06:29:28 +00:00
l10n daemon script
68f6734d5c SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-25 01:46:45 +00:00
Kai Uwe Broulik
f013dc410e Don't block screen edge for fullscreen effects
Otherwise in overview effect you cannot go back out the way you came.

Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2416>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2416>
2022-05-24 23:58:33 +00:00
Kai Uwe Broulik
d143f6e3c4 backends/x11: Arm vsync monitor in EglX11Backend
This was originally on `EglX11Backend::endFrame` and got lost
as part of refactoring in 7358daa9, breaking nested `kwin_wayland`
rendering with GL.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2458>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2458>
2022-05-24 14:44:59 +00:00
Aleix Pol
cad5ddbab3 xdg_activation_v1: Do not bounce icon if the desktop file was not found
It's annoying and doesn't buy us much.
Additionally, take X-KDE-StartupNotify into account as we are meant to.

BUG: 453940
Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2415>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2415>
2022-05-24 13:14:43 +00:00
Vlad Zahorodnii
221f114d80 effects/zoom: Render scene in an offscreen texture
This fixes integration of the zoom effect with the blur effect and qtquick
effects such as overview or window view.

The main con of the proposed solution is that offscreen rendering can be
a bit overkill. But on the other hand, it's the most robust way to
ensure that fullscreen effects integrate correctly with the zoom effect.
For example, without it, the quick scene effect would need to figure out
what screen views to paint for the given screen. There are also more
finicky cases, e.g. the screen transform effect.

BUG: 447002
BUG: 447670
BUG: 453467
Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2451>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2451>
2022-05-24 12:29:11 +00:00
Vlad Zahorodnii
cc487d4292 effects/zoom: Specify effect chain position
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2451>
2022-05-24 12:29:11 +00:00
Vlad Zahorodnii
80b9617bad effects/fallapart: Fix glitch
The WindowItem visibility reference must be dropped after, not before
starting painting. It also makes the fall apart effect code consistent
with other effects.

BUG: 454243
Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2455>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2455>
2022-05-24 12:06:09 +00:00
Kai Uwe Broulik
cfd3676e96 backends/x11: Restore dedicated XRenderUtils::init function
Under kwin_wayland `kwinApp()->connection()` is for communicating with
XWayland, but in X11Windowed backend we need to talk to the host XServer.

Restore `XRenderUtils::init` and set it accordingly based on
whether we're running standalone or windowed, so that `kwin_wayland`
works running nested in an X session again.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2457>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2457>
2022-05-24 11:45:52 +00:00
Vlad Zahorodnii
8b644fee58 backends/x11: Ensure that Output::geometryChanged is emitted when modes change
BUG: 453696
Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2454>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2454>
2022-05-24 09:51:44 +00:00
Alexander Lohnau
38eef5e2b7 Adjust name of KCM desktop files
The name should match the KCM plugin id, otherwise the entry can not be fond when the KCM should get pinned in the task manager
2022-05-23 19:40:26 +02:00
Vlad Zahorodnii
e6a2cbc345 wayland: Simplify keystate protocol implementation
Access input machinery directly to monitor modifiers.

Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2447>
Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2447>
2022-05-23 07:06:29 +00:00
Volker Krause
f64214e8b3 Add missing include
This is no longer indirectly included with KF deprecation level 5.94.
2022-05-22 15:13:40 +02:00
Vlad Zahorodnii
d91bdee3c7 Allow fullscreen effects to override latency policy
With some effects, latency policy doesn't matter and it's preferred if
kwin uses the smoothest animation latency policy in order to minimize
the number of frame drops, e.g. slide.
2022-05-21 17:21:20 +00:00
Vlad Zahorodnii
773384b59f Remove unused includes in scene.cpp
QQuickWindow and QVector2D are unused.
2022-05-21 15:27:42 +03:00
Vlad Zahorodnii
e3da5fc76e Remove EffectFrame leftovers in Scene 2022-05-21 14:20:33 +03:00
Ismael Asensio
329ddf5789 kcm/rules: Use the new KCM namespace for standalone launch
After commit c1d0aa18, the namespace where the KCM is installed
changed to `plasma/kcms/systemsettings/`.

We need to point to this new plugin location when the KCM is
launched via Alt-F3 > "Window Specific Properties"

Also let's set the full plugin location from CMake instead of
harcoded in C++ so it is easier to keep it in sync.

BUG: 454066
FIXED-IN: 5.25.0
2022-05-21 04:31:10 +00:00
Aleix Pol
14aefcb373 xkb: Explain mystery constant
While looking at xkb code I found what this + 8 meant, figured we better
include it in our code so it feels less magical.
2022-05-20 23:10:57 +00:00
Aleix Pol
da8ad3201b xdg_activation_v1: Improve internal API
Be explicit about how we only request privileged tokens internally in
KWin.
2022-05-20 16:36:55 +00:00
Xaver Hugl
13dd31d98a effects/windowview: allow closing windows with touch 2022-05-20 12:50:15 +00:00
David Edmundson
e23c3a69d9 [Effects/blend] Let fullscreen effects take priority
The Blendchanges effect works by showing a snapshot of the current
screen for a few ms. Any other active full screen effect will look
broken, so it should take priority.

This is pre-empting an issue with a new Plasma feature that syncs
colours to wallpapers. Once we animate activity switches / have per
desktop wallpapers it'll glitch out.
2022-05-20 08:15:22 +00:00
Alexander Lohnau
af18335a0d Add missing NoDisplay=true to KCM desktop files
We want those to be shown when they are explicitly pinned, but
not in the normal app search/overview.

Fixes https://invent.kde.org/teams/plasma-mobile/issues/-/issues/154#note_452861
2022-05-19 18:23:06 +02:00
Vlad Zahorodnii
efece0a300 effects/windowview: Add ability to deactivate the effect by hitting the same screen edge
In present windows, you could hit the same screen edge that you use to
activate the effect in order to deactivate it.
2022-05-19 15:14:28 +00:00
Vlad Zahorodnii
843b3cfb2a effects/screenedge: Move it forward in the effect chain
Move the screen edge effect earlier in the effect chain so QML effects
can render their contents first, then draw screen edge glow.
2022-05-19 14:11:05 +00:00
Kai Uwe Broulik
a2c91f9434 backends/x11: Cleanup KWinXRenderUtils and move it to eglx11common
The XRender backend has been removed, leaving most of KWinXRenderUtils unused.

The few features that are still used, notable `XRenderPicture` and pict format
are moved into the x11/common directory.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2022-05-19 12:10:18 +00:00
Xaver Hugl
0bbd4445f2 backends/drm: fix offset cursor
For some reason with legacy the cursor gets an offset when changing the
image. In order to work around this, directly issue a cursor move with the
corrected position when changing the buffer
2022-05-19 09:43:27 +00:00
Xaver Hugl
23c68fd9da effects/desktopgrid,overivew: set touchpad gestures to match 5.24
As we don't provide any ability for the user to configure the gestures yet,
the gesture for the desktop grid should stay as it was in the last release.
This commit swaps the gestures for desktopgrid and overview to achieve that.
2022-05-19 07:37:29 +00:00
Vlad Zahorodnii
1ee00bc6f9 wayland: Fix drag-and-drop issues in Firefox
At the moment, the data offer initializes supported and preferred action
to "none". But if the target doesn't accept anything the source
provides, the compositor may still need to send action events with "none"

This change makes data offer and data source provide dnd actions wrapped
in std::optional in order to indicate if they have been set explicitly.
2022-05-19 07:00:43 +00:00
David Redondo
20a94d7157 xwayland: Keep source/Xvisit alive for longer
SeatInterface emits dragEnded when the drag is dropped. The target may want
to interact with the data source after the drop happened, for example only
fetching data after the drop and not during the drag.
(Note that the Wayland protocol has the same
Xvisits are now not deleted prematurely but only when they are really finished.
(Note that the Wayland protocol has the same distinction between dropped and
finished so it maps nicely).
For storing  previous visits the same code pattern as in the rest of the XWayland
DND code is used.
The SelectionSource is reset when the next Drag/Drop operation involving a X window
is started (see startDrag and doHandleXfixesNotify) or when the Wayland source is
about to be deleted.

BUG:450460
FIXED-in:5.25.0
2022-05-19 06:45:00 +00:00
Guenther Grau
f6f4a296f2 Fix argument order for clientMaximizedStateChanged
Arguments for clientMaximizedStateChanged were incorrect in window.cpp.
They are correct in xdgshellclient.cpp and window.h

BUG: 380836
2022-05-19 09:33:05 +03:00
Xaver Hugl
a262f2b28a Revert "wayland/outputdevice: use OutputMode directly"
This reverts commits 67181d5db7 and
d03e352dbf.

BUG: 454014
2022-05-19 00:59:54 +02:00
Vlad Zahorodnii
bcbbbc561b Rename Workspace::removeAbstractClient() to Workspace::removeWindow() 2022-05-18 17:14:09 +00:00
Vlad Zahorodnii
06a9c686f1 Move popup cleanup from Workspace::removeX11Window() to Workspace::removeAbstractClient()
This popup cleanup code can be useful also on wayland.
2022-05-18 17:14:09 +00:00
Xaver Hugl
62e1130846 gestures: limit progress range for pinch gestures
If progress goes out of the [0, 1] range, effects misbehave
2022-05-18 16:55:27 +02:00
Xaver Hugl
2238e608d6 gestures: rename weirdly named methods 2022-05-18 16:54:24 +02:00
Xaver Hugl
103d6b9e92 globalshortcuts: fix warning 2022-05-18 16:53:13 +02:00
Aleix Pol
1176f31e0d Support KWindowSystem interface with activation support
Allow internal uses of KWindowSystem to support activating other
clients.

BUG: 453748
BUG: 453785
2022-05-18 13:48:52 +00:00
David Redondo
d3a37aa9ae Update device outputName when setting output
BUG:451279
FIXED-IN:5.25.0
2022-05-18 12:50:24 +00:00
Xaver Hugl
b0b551653f backends/drm: update cursor after compositing reset
Otherwise the cursor won't be shown, as its buffer and layer got destroyed

BUG: 453823
2022-05-18 11:00:14 +00:00
Xaver Hugl
d03e352dbf wayland/outputinterface: fix crash
The current mode may be nullptr
2022-05-18 10:03:13 +00:00
Vlad Zahorodnii
be717d5c67 autotests: Fix testTouchPoint
Gesture recognition code doesn't handle correctly cancelling a touch
sequence. testTouchPoint in one of its tests simulates pressing the
screen with three fingers and cancelling the touch sequence.
2022-05-18 09:46:56 +00:00
Vlad Zahorodnii
f1c9cb5d64 Emit Workspace::windowAdded() at more intuitive time when starting to manage an X11 window
Emitting the Workspace::windowAdded() signal before actually adding the
window to the Workspace is counter-intuitive and it can a source of
potential bugs as relevant window lists in Workspace don't contain the
window yet.
2022-05-18 07:44:50 +00:00
Xaver Hugl
67181d5db7 wayland/outputdevice: use OutputMode directly 2022-05-18 07:04:32 +00:00
Nate Graham
4fb78a415c kcmkwin/kwinscreenedges: only show KCM on Wayland
The features that this KCM lets you trigger barely work on X11 and
really only work properly on Wayland.

Unfortunately we don't have the ability to have separate settings
between X11 and Wayland, and for this reason we removed a default left
touch edge in 3df7985570 a year and a half
ago because it was too buggy on X11.

This commit takes the next step and hides the KCM entirely on X11, so
you can only use it on Wayland where it actually works properly.

One potential downside is be that any users who are actually using it
on X11 will lose the ability to use a GUI to configure these features
unless they go to the Wayland session to do it. However the number of
such users is likely small given how the feature does not really work on
X11.

However the upside is that Wayland users who can see the KCM can
actually use the features that it lets you configure because they work
properly there.
2022-05-17 21:27:11 +00:00
Xaver Hugl
441266c427 wayland/outputinterface: use the same enums as core KWin 2022-05-17 19:05:15 +00:00
Vlad Zahorodnii
4c05db3c30 Simplify Workspace::addWaylandWindow()
I believe this is a relic from the past when we used not to destroy
the ShellClient when the associated surface is unmapped.
2022-05-17 16:38:47 +00:00
Vlad Zahorodnii
09ba8729fc Partially revert 89b35c3238
As it turns out, it's needed to ensure that the Workspace emits the
stackingOrder changed signal when a new window is added. It's also
implicitly needed to make sure that Window::stackingOrder() is updated.
2022-05-17 14:52:24 +00:00
Aleix Pol
f4c704a904 screenedges kcm: Fix initial screen detection
Use QWidget::screen instead of having own code to fetch the screen. It
works better this way before the window is initialised.
2022-05-17 14:58:20 +02:00
l10n daemon script
ad74b8cd59 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-17 01:45:45 +00:00
Vlad Zahorodnii
a47f18d8a2 wayland: Fix supported action initialization in data offer interface
Currently we guess the supported and preferred dnd actions in data offer
for version >= 3. This can create problems because kwin may not send the
right action events when the supported dnd actions actually change.
2022-05-16 12:38:07 +00:00
Vlad Zahorodnii
00fb259c41 backends/drm: Fix cursor size check
Currently, the cursor size check ignores the cursor bitmap's size, so
the hardware cursor is used even though the bitmap size exceeds cursor
limits.
2022-05-16 12:09:27 +00:00
Vlad Zahorodnii
a601a08ba7 wayland: Make setting realtime scheduler more fine grained
With this only the main and the libinput threads will use realtime
scheduling, so it will be harder to leak realtime scheduling to somebody
else.

The only caveat is that kwin would need to keep CAP_SYS_NICE around,
however on the other hand, it's needed to ensure that kwin_wayland is
able to get high priority EGL contexts with some drivers, e.g. intel.
2022-05-16 11:15:20 +00:00
Kai Uwe Broulik
1878ba0e10 backends/drm: Guard gbm_bo_get_fd_for_plane in dmaBufAttributesForBo
It is guarded elsewhere but not here.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2022-05-16 10:48:58 +00:00
Kai Uwe Broulik
701bfc71be Link Qt X11Extras in kwin core library
QX11Info is used in `platform.cpp`, which is used by both
kwin_x11 and kwin_wayland. The latter only gets it implicitly
through KGlobalAccelPrivate.

Ideally, platform.cpp was split to not require QX11Info in
kwin_wayland in the first place.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2022-05-16 09:34:34 +00:00
Kai Uwe Broulik
edf9698e23 backends/drm: Drop QObject and moc include from layer
There's no QObject anymore which causes a MOC warning

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2022-05-16 10:49:50 +02:00
Vlad Zahorodnii
ed90be0783 wayland: Bump RLIMIT_NOFILE limit
As a wayland compositor kwin can hold many open file descriptors and
therefore it's easier for it to hit the soft file descriptor limit. This
change makes kwin_wayland bump the soft file descriptor limit to the
hard limit. With systemd, it's usually 500K.

In order to prevent causing mess in child processes, pthread_atfork() is
used to register a handler which will be invoked in the child process
after fork() in order to restore RLIMIT_NOFILE to its original value.
2022-05-16 07:00:47 +00:00
l10n daemon script
2178f26e7b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-16 01:48:22 +00:00
Vlad Zahorodnii
6451cb2cfe backends/drm: Also release cursor layer buffers 2022-05-15 08:31:39 +00:00
l10n daemon script
d0d642ba68 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-15 01:56:42 +00:00
Nate Graham
9ff137f5cb effects/overview: enable it by default
Overview is quite polished now, enough that we have a default touchpad
gesture that opens it by default. It's time to move it out of public
beta and enable it by default, and this commit does that.

BUG: 446753
FIXED-IN: 5.25
2022-05-13 19:42:29 +00:00
Vlad Zahorodnii
d7ec51998b backends/drm: Import gbm bos using dmabuf
It appears that importing gbm_bo's using eglCreateImageKHR() doesn't
work on nvidia.

Another issue is that Platform::createDmaBufTexture() uses
gbm_bo_create(). The nvidia driver doesn't like that, it's preferred to
use gbm_bo_create_with_modifiers().

In order to address those issues, this change refactors how gbm_bo
objects are imported and how gbm_bo's are allocated for dmabuf textures,
so the same code can be reused in EglGbmBackend::textureForOutput()
and Platform::createDmaBufTexture().
2022-05-13 15:55:05 +00:00
Marco Martin
db2af5500f effects/overview: hide panels
This makes it consistent with WindowView (and the panel window doesn't respond
to input anyways even if shown, which is misleading).

BUG: 444274
FIXED-IN: 5.24.6
2022-05-13 15:37:13 +00:00
Xaver Hugl
5d37a59198 effects/overview: fix scale of windows when dragging them upwards 2022-05-13 14:19:34 +00:00
Arjen Hiemstra
79dfb1ff61 input: Move MoveResize input filter after global shortcut input filter
This allows using global shortcuts while a move/resize is ongoing. Most
importantly, this allows moving a window to a different desktop by
picking it up and then using a global shortcut to move to a different
desktop.

BUG: 444696
2022-05-13 10:37:29 +00:00
l10n daemon script
2575bf8cd8 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-13 01:45:45 +00:00
Vlad Zahorodnii
e26dca110e Drop Application::isClosingX11Connection()
It's unused.
2022-05-12 14:59:55 +00:00
Vlad Zahorodnii
89b35c3238 Remove redundant window propagation
If a wayland window is added, we don't need to propagate that to X11.
2022-05-12 14:59:55 +00:00
Vlad Zahorodnii
0489d4a2f6 Merge Workspace::stackingOrder() and Workspace::xStackingOrder()
The Workspace has two stacks - one with managed windows and deleted
windows, the other includes windows from the first stack + override
redirect windows.

This change merges both stacks. It has several benefits - we will be
able to move window elevation stuff to Workspace and streamline the
scene stuff, for example it will be possible to have a root item.
Another advantage is that unmanaged windows will have
Window::stackingOrder() property set, which can be useful in the future
in qml effects or (qtquick scene if we push harder in that front).
Another advantage is that kwin will make less X11 calls when restacking
managed windows.
2022-05-12 14:59:55 +00:00
Vlad Zahorodnii
fa0143fb97 backends/drm: Ensure that there's opengl context when painting cursor 2022-05-12 12:34:48 +00:00
Marco Martin
796e1cf5bf configurable way to force tabletmode on or off
The user may want to never have it, or may be needed to enable
or disable it for debugging purposes
2022-05-12 09:47:16 +00:00
Vlad Zahorodnii
654313d460 scene: Remove repaint on current activity/desktop change
WindowItem has proper visibility set now, so these two interim hacks can
be removed now.

Workspace::stackingOrderChanged still needs to be kept around as the
Scene has no root item which could track the order of its child (window)
items.
2022-05-12 07:59:42 +00:00
l10n daemon script
12ca0a6128 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-12 01:42:21 +00:00
Xaver Hugl
ed06d752f0 backends/drm: blacklist hardware cursors with the NVidia driver
It doesn't work and seems to cause hangs. If desired, this can be overwritten
by explicitly setting KWIN_FORCE_SW_CURSOR to 0.

BUG: 453632
2022-05-11 21:53:00 +00:00
Xaver Hugl
78794b4239 backends/drm: disable cursor layer when setCursor fails
Otherwise the next commit will still try to enable the cursor layer, and
possibly fail because of it
2022-05-11 21:53:00 +00:00
Xaver Hugl
0b27ce4d34 Make touchscreen gestures realtime 2022-05-11 15:08:43 +00:00
Aleix Pol
946087ef37 Inhibit edges when the active window is full screen by default
At the moment we trigger the edges even when the active window is full
screen which is unfortunate when running certain games, for example when
you're attacking the village at the north-east in Age of Empires and you
have the Overview effect on.

This changes the default to inhibit them (like we used to just do for
sides but not corners for some reason) and adds a checkbox to restore
them even in that case.

BUG: 441464
2022-05-11 16:54:38 +02:00
David Redondo
ed45af55bd Install tabbox kcm only once 2022-05-11 14:22:10 +00:00
Vlad Zahorodnii
ea1fadfe8d Remove Window::addRepaint() and Window::addLayerRepaint()
Conceptually, scheduling repainting in Window doesn't belong there. This
change rewires EffectWindow internals so it schedules repaints using the
associated WindowItem.

Window::addWorkspaceRepaint() has not been removed yet because
Window::elevate() uses it.
2022-05-11 15:13:45 +03:00
Vlad Zahorodnii
8cc5e04238 scenes/opengl: Rename RenderContext::transforms to RenderContext::transformStack
It's a better name and it's consistent with opacityStack.
2022-05-11 09:42:35 +00:00
Vlad Zahorodnii
63a866d98c Make WindowItem handle opacity
This change makes the WindowItem track the opacity and schedule a
repaint. It further decouples the legacy scene from code window
abstractions.

It's an API breaking change. WindowPaintData no longer can make windows
more opaque. It only provides additional opacity factor.
2022-05-11 09:42:35 +00:00
Alexander Lohnau
99f01ee9c5 Fix malformed X-KDE-OnlyShowOnQtPlatforms value in keyboard KCM metadata 2022-05-11 11:30:36 +02:00
Alexander Lohnau
cdab439bd0 Add missing installation of virtualkeyboard KCM 2022-05-11 11:29:59 +02:00
l10n daemon script
472bdf117c SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-11 01:45:27 +00:00
Xaver Hugl
d83121dbe4 backends/drm: also use modifiers by default for virtual outputs 2022-05-10 19:42:36 +02:00
Xaver Hugl
f02a6fd128 backends/drm: add fallback for missing gbm modifier support
It can happen that a gbm implementation does not support modifiers, while
the drm driver does. To prevent that from breaking KWin, fall back to creating
a gbm surface without modifiers when creating one with modifiers fails.

BUG: 453320
2022-05-10 19:42:32 +02:00
Alex Richardson
a264938ff3 Simplify cross-compilation of qtwaylandscanner_kde
I am trying to cross-compile and since qtwaylandscanner_kde is used
during the build, I need to build a native version of the
qtwaylandscanner_kde tool first. This change allows building
qtwaylandscanner_kde as a standalone CMake project which the cross-build
can then be pointed at to find the host tool. If an explicit path to
qwaylandscanner_kde is not passed, we will try to use ExternalProject_Add
to build it. This approach was taken from ksyntaxhighlighting:
https://invent.kde.org/frameworks/syntax-highlighting/-/blob/master/src/indexer/CMakeLists.txt

This patch makes it significantly easier to cross-compile KWin, as we now
only need a native QtCore library instead of all the dependencies.
2022-05-10 16:34:49 +00:00
Vlad Zahorodnii
a7d61f7bfa Fully replace SceneWindow with WindowItem
This completes the initial transition to scene items.
2022-05-10 15:45:48 +00:00
Xaver Hugl
15a9744979 effects/windowview: correct gesture direction
BUG: 453427
2022-05-10 14:30:00 +00:00
Aleix Pol
bbe886a083 ScreenEdge: fix double look-up 2022-05-10 13:14:26 +00:00
Aleix Pol
9c41ec461e kcm/edges: Draw the ratio of the monitor we are on
At the moment it's showing whatever is QGuiApplication::primaryScreen(),
which on Wayland is random.
2022-05-10 13:14:26 +00:00
Aleix Pol
b7f3db5aca edges: Also check edge blocking on fullscreen windows on Wayland
At the moment we were reconsidering the fullscreen block only on X11.
Instead, use the abstracted information.
2022-05-10 13:14:26 +00:00
Vlad Zahorodnii
94d91e6404 Remove redundant Window::isClient() call
Unmanaged windows are on all desktops, activities, not hidden and not
minimized.
2022-05-10 12:23:01 +00:00
Ahmad Samir
74482b2e2d Fix typo
Spotted by Luca Beltrame

GIT_SILENT
2022-05-10 14:16:47 +02:00
Xaver Hugl
94b0ca8146 tabbox: don't dismiss popups
The glitches that dismissing popups was supposed to prevent are apparently
no longer present.

BUG: 446318
2022-05-10 13:07:03 +02:00
Vlad Zahorodnii
313baa4b51 Remove QAction include in AnimationEffect
It builds fine without QAction include.

BUG: 453609
2022-05-10 10:14:11 +00:00
Xaver Hugl
7eefc48536 effects/overview,windowview: restore ability to close windows 2022-05-10 09:49:36 +00:00
Vlad Zahorodnii
2983727871 effects: Make DeformEffect disable clipping if specified region is infinite
The Scene no longer clips window quads if the specified paint region is
infinite. The infinite region is defined as (INT_MIN/2, INT_MIN/2,
INT_MAX, INT_MAX). If you try to scale the infinite region, you will
easily hit integer overflow.

This change makes the DeformEffect disable geometry clipping if the given
paint region is infinite region in order to avoid hitting integer
overflow.
2022-05-10 07:56:43 +00:00
Xaver Hugl
f07d6bd400 backends/drm: port the cursor to use output layers
CCBUG: 447797
2022-05-10 07:06:53 +00:00
Xaver Hugl
12515b4656 backends/drm: fix qpainter 2022-05-10 06:09:34 +00:00
Méven Car
1dd12a064a Fix a couple unused warnings
GIT_SILENT
NO_CHANGELOG
2022-05-10 07:33:30 +02:00
l10n daemon script
e1cec89ddb SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-10 01:45:54 +00:00
Kai Uwe Broulik
9cb5b38970 effects: Port EffectFrame to OffscreenQuickView
This allows to toss a large amount of custom rendering code.

Furthermore, it removes the build-time dependency on Plasma Framework
for FrameSvg and Theme from KWin core as it's pulled in through QML
imports now.

It also cleans up the API and removes functions that are effectively
unused or no-op after this change.

For instance, effects often destroy their effect frames
in pre/postPaintScreen, which would now destroy an `OffscreenQuickView`,
which changes GL context. This is alleviated by delaying detruction
of the internal view.

Support for the features of text cross-fade and selection frame,
which are not used by any of the built-in effects, is dropped.

Signed-off-by: Eike Hein <eike.hein@mbition.io>
2022-05-09 17:53:58 +00:00
David Redondo
f6bb95f18e Bump plasmashell version to 7 2022-05-09 15:59:19 +00:00
Xaver Hugl
e4695325a6 backends/drm: store gbm buffer for screen recording 2022-05-09 14:06:55 +00:00
Vlad Zahorodnii
0860efecc3 Move SceneWindow::decorationShape() to DecorationItem 2022-05-09 09:41:39 +00:00
Vlad Zahorodnii
bc1f808f0f Move paint method from SceneWindow to Scene
That's the next step in allowing to reuse surface painting code between
the workspace and the cursor layer.
2022-05-09 08:31:13 +00:00
Vlad Zahorodnii
683a222233 Drop lanczos filter
The lanczos filter depends on the effect system. It makes very difficult
changing painting code from SceneWindow to Item.

Given that the last big users of the laczos filter - present windows and
desktop grid effects were re-written in QML. The only remaining user of
the lanczos filter is the thumbnail aside effect. Given that it's a
really obscure usecase, switching to the linear filter won't be very
noticeable.

As a backup plan, one can reimplement the thumbnailaside effect using
QML. The lanczos filter is already implemented in plasma-framework.
2022-05-09 08:31:13 +00:00
Xaver Hugl
a110aabbcc backends/drm: consider escaped separators KWIN_DRM_DEVICES
':' conflicts with the file names in /dev/dri/by-path, so allow it to be
escaped with '\'

CCBUG: 453386
2022-05-09 08:16:47 +00:00
l10n daemon script
5ddcd0827b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-09 01:43:54 +00:00
Aleix Pol
f3ec05c85a wayland: Fix activation when activating surfaces disappear
We track when the user last interacted with a window so that we can
decide on the relevance of newly activated windows.

Fixes network/neochat#524
2022-05-09 00:59:27 +02:00
Erik Kurzinger
e6d2bc153f platforms/drm: set read buffer in GbmSurface::makeContextCurrent
The first time the GBM backend's EGL context is made current after
creation, both the read and draw surfaces are set to EGL_NO_SURFACE.
This will set the GL read and draw buffers to GL_NONE in accordance with
the EGL spec.

When a real surface is later made current, however, the spec is arguably
unclear on whether the read and draw buffers should remain set to
GL_NONE or whether they should be restored to the default GL_BACK.  The
Mesa driver does the latter, the NVIDIA driver does the former.

To work around this difference, Kwin has an explicit call to
glDrawBuffer in GbmSurface::makeContextCurrent. It does not have a
corresponding call to glReadBuffer, though, which can cause some desktop
effects such as background contrast to render incorrectly with the
NVIDIA driver. This change adds that missing call.
2022-05-08 12:58:10 -07:00
Alex Richardson
35c36be140 Fix incorrect usage of __has_include
I introduced this typo in 0a0a1fd330
2022-05-08 12:11:02 +00:00
Alexander Lohnau
61eba32cdd Rename kcm metadata json files to metadata.json 2022-05-08 09:03:03 +00:00
Alexander Lohnau
c1d0aa18cf Port KCMs to new install location
Task: https://phabricator.kde.org/T14517
2022-05-08 09:03:03 +00:00
Vlad Zahorodnii
51e9340abb Remove a Workspace::findAbstractClient() overload
Workspace::findAbstractClient(QUuid) overload is used only by the
windows krunner plugin.

This change fixes a potential null dereferencing and removes the
findAbstractClient() overload in favor of a more generic findToplevel()
overload.
2022-05-07 18:51:05 +00:00
Xaver Hugl
9ef882f3fb backends/drm: use addfb2modifier again when supported
Otherwise the kernel might fail our request because the modifier doesn't
match the buffer
2022-05-07 13:28:47 +00:00
Xaver Hugl
788ae5891a backends/drm: zero metadata for unused planes
The kernel may fail requests if data for unused planes is non-zero.
2022-05-07 10:09:30 +00:00
l10n daemon script
14cf7524b6 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2022-05-07 01:44:29 +00:00
Volker Krause
f32df68f3d Use the properly named screencast Wayland protocol file
This is needed to build with Qt6.
2022-05-06 19:12:06 +00:00
Xaver Hugl
04509aaeb7 backends/drm: when creating a fd fails, reset all fds to -1 2022-05-06 18:31:03 +00:00
Vlad Zahorodnii
bc57e89b75 backends/drm: Fix file descriptor check 2022-05-06 17:24:47 +00:00
Vlad Zahorodnii
ad45deaf80 backends/drm: Add missing file descriptor initializer
We need to initialize file descriptors to -1 explicitly.

BUG: 453470
2022-05-06 17:24:47 +00:00
Marco Martin
9a5d34cf6c default value as false
this should also fix compilation on Qt6
2022-05-06 16:52:01 +00:00
Marco Martin
eca9b5047a effects/windowview+overview: get back option to hide minimized windows
Option to hide minimized windows as old present windows effect had.

BUG: 441627
BUG: 453426
FIXED-IN: 5.25
2022-05-06 15:48:41 +00:00
Xaver Hugl
d5dad1b471 backends/drm: properly release all buffers on render backend destruction
Releasing the buffers is necessary for example in the case of a GPU reset,
to make sure that the gbm surface is still properly destroyed and all buffers
with invalid content freed.
2022-05-06 12:39:15 +00:00
Xaver Hugl
c65c822392 backends/drm: refactor buffer management
Instead of buffers being both drm framebuffers and gbm / dumb buffers, these
responsibilities are now split, which makes it possible to do zero copy
screen casting in the future.

Both framebuffers and gbm / dumb buffers also now always hold a valid underlying
resource, which simplifies code a bit.
2022-05-06 12:39:15 +00:00