Commit graph

26417 commits

Author SHA1 Message Date
Vlad Zahorodnii
b4e2241ded autotests: Make factional-scale-v1 factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
8a11dde6f2 autotests: Make input panel surface factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
98f0af0bc1 autotests: Make wl-subsurface factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
f723b11a9a autotests: Make layer shell surface factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
l10n daemon script
ad747daf4f GIT_SILENT Sync po/docbooks with svn 2024-03-11 01:20:58 +00:00
Vlad Zahorodnii
670c71f11e Don't block interactive moves by sync requests
The compositor doesn't need to synchronize with the client when moving
windows, except cases like unmaximizing the window. It's needed only
when resizing to avoid overwhelming the client with configure notify events.
2024-03-10 19:07:02 +00:00
Vlad Zahorodnii
93326f3e50 Revert "plugins/zoom: Port to CursorItem"
This reverts commit e40f632c9b.

It broke non default mouse tracking modes. There are just too many
options, so revert the change instead.
2024-03-10 17:44:25 +00:00
Vlad Zahorodnii
af7388c8a3 autotests: Port xdg-shell factory functions to unique_ptr 2024-03-10 17:25:52 +00:00
Vlad Zahorodnii
3f6a4eb1ea plugins/shakecursor: Mark it as internal
The accessibility kcm can be used to enable/disable the shake cursor
plugin and change its other parameters, so hide it in the desktop
effects kcm by default.
2024-03-10 17:12:55 +00:00
Vlad Zahorodnii
47829e6ac3 Remove isWaitingForInteractiveMoveResizeSync() check when interactively moving a window
There's already a check at the start of the function. Although interactive
moves don't need to be synchronized with the client, in general.
2024-03-10 10:43:03 +00:00
l10n daemon script
6435adc9d8 GIT_SILENT Sync po/docbooks with svn 2024-03-10 01:38:05 +00:00
Kristen McWilliam
0bfe7e150a scripting/workspace_wrapper: improve readability
Adds whitespace between documented members of the header file.

Currently the members are all bunched together, making it difficult to
read as one flows directly into the next. This change adds a newline
between each member, making it easier to read.
2024-03-10 01:17:17 +00:00
l10n daemon script
422b6c4f0d 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"
2024-03-10 01:13:49 +00:00
Xaver Hugl
0360ce38e2 core/colorspace: fix ColorDescription comparisons
They used the sdr gamut wideness (which should've been removed) instead of
the sdr colorimetry

BUG: 482809
2024-03-09 15:57:36 +01:00
Vlad Zahorodnii
277701e99f scene: Inherit scene from the parent item
It makes Item API more ergonomic.
2024-03-09 11:18:21 +00:00
l10n daemon script
c1311abfc1 GIT_SILENT Sync po/docbooks with svn 2024-03-09 01:26:57 +00:00
l10n daemon script
05dc255048 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"
2024-03-09 01:15:34 +00:00
Yifan Zhu
2e5d3253d4 screenedge: allow creation between screens on wayland
Allow the creation of screen edges bordering two screens. This allows
panels in auto-hide/dodge-windows mode to work when the panel is
positioned between two edges.

Don't change the X11 behavior since edge barrier is not supported on
X11, without which it is virtually impossible to exactly position the
cursor on the pixel to activate the edge.

BUG: 351175
2024-03-08 12:03:28 -08:00
Yifan Zhu
ad13765348 pointer_input: implement edge barrier between screens
Allow users to configure a virtual edge barrier between screens.
The pointer will only cross over to the other screen after the distance
travelled surpasses edgeBarrier.

Reduce the speed during interactive moveresize, at edges that trigger,
and at the corner.

Only supports wayland. Doesn't have X11 support since it is far too
complicated there.

BUG: 416570
BUG: 451744
2024-03-08 12:03:28 -08:00
Yifan Zhu
ea4fa87bc6 utils/xcbutils: Don't call toXNative with unsigned integer
Instead use signed integers, to prevent the implicit cast from unsigned
integers to qreal.

BUG: 482687
2024-03-08 19:25:39 +00:00
Xaver Hugl
b19426879f opengl/openglcontext: fix capitalization of isOpenGLES 2024-03-08 17:26:54 +00:00
Xaver Hugl
2f3b05e733 opengl: move "isOpenGLES" from eglutils to eglcontext and rename it
It's named in a confusing way and only used in eglcontext
2024-03-08 17:26:54 +00:00
Xaver Hugl
179af074eb opengl/glframebuffer: move s_fbos to OpenGlContext 2024-03-08 17:26:54 +00:00
Xaver Hugl
493797ff31 opengl: move extension function resolving and debug output into OpenGlContext 2024-03-08 17:26:54 +00:00
Xaver Hugl
7618be3697 opengl/glplatform: remove dependency on OpenGlContext 2024-03-08 17:26:54 +00:00
Xaver Hugl
605401dcfc opengl: move glsl version to OpenGlContext 2024-03-08 17:26:54 +00:00
Xaver Hugl
c5cd8d1318 port most uses of GLPlatform::isGLES to use OpenGlContext directly 2024-03-08 17:26:54 +00:00
Xaver Hugl
5aa2606f04 opengl/glplatform: remove GLPlatform::supports method
There's only one "feature" left, so the method for it can be used instead
2024-03-08 17:26:54 +00:00
Xaver Hugl
c41da588f6 opengl: move timer query detection to OpenGLContext 2024-03-08 17:26:54 +00:00
Xaver Hugl
568da29fbf opengl: move pack invert detection to OpenGlContext 2024-03-08 17:26:54 +00:00
Xaver Hugl
a8b9e8d262 opengl: remove most of glutils 2024-03-08 17:26:54 +00:00
Xaver Hugl
bb0d1fc45e opengl: move static vertex buffer variables to OpenGlContext 2024-03-08 17:26:54 +00:00
Xaver Hugl
f98477e05b opengl/glframebuffer: move static variables to OpenGlContext 2024-03-08 17:26:54 +00:00
Xaver Hugl
1b4a9abbe3 opengl/gltexture: remove all the static things
The static fbo is removed, and the rest is moved to OpenGlContext
2024-03-08 17:26:54 +00:00
Xaver Hugl
feeacf37db opengl: require support for fbos
It's effectively required already, as they're used everywhere
2024-03-08 17:26:54 +00:00
Xaver Hugl
e763cd9eec opengl: remove the global shadermanager instance 2024-03-08 17:26:54 +00:00
Xaver Hugl
1b21b08130 opengl: move shader manager getter to OpenGlContext 2024-03-08 17:26:54 +00:00
Nate Graham
7ff51ba47c Raise target mobile device DPI
A target mobile DPI of 135 is rather low and results in excessively
large scale factors, so everything is too big.. Let's raise it a
little bit to improve the default level of information density on
these devices that are designed to be held close to the face.

This has the effect of changing the calculated default scale factor for
the following devices:

| Device     | Device DPI | Old scale factor | New scale factor |
| ---------- | ---------- | ---------------- | ---------------- |
| Steam Deck | 204        | 1.5              | 1.25             |
| PinePhone  | 268        | 2.0              | 1.75             |
| OnePlus    | 388        | 3.0              | 2.5              |

Devices are taken from the autotest data found at
https://invent.kde.org/plasma/kscreen/-/blob/master/tests/kded/configs/AutogeneratedMobileScreenScales.json
2024-03-08 17:14:16 +00:00
Xaver Hugl
f3d9e5c90c backends/drm: handle dumb buffer target correctly
It's independent of the multi gpu import mode

BUG: 482859
2024-03-08 16:19:58 +00:00
Vlad Zahorodnii
9bf7c294a8 plugins/fadingpopups: Fix autohidden panels blinking when plasmashell launches
The autohidden panels "blink" because this effect animates their opacity.

The dock windows are animated because, as the comment says, the old effect
animated almost every window.

Conceptually, animating docks doesn't align with the purpose of this effect.
2024-03-08 16:07:36 +00:00
Nate Graham
a136a159f9 Allow harmless XWayland key snooping by default
Wayland has a design philosophy of prohibiting keyloggers, which is
sane. However X11 did not, and a lot of X11 apps were developed with the
expectation of being able to sniff keyboard events to handle global
shortcuts. When such apps are run in a Wayland session under XWayland,
these features break.

Historically we have prohibited this in the name of security. In Plasma
5.27, we gave users a KCM they can use to choose their preferred balance
of security and unbreaking XWayland apps with global shortcuts. But we
still defaulted to total 100% security, at the expense of breaking these
apps by default.

However today we have a compromise that unbreaks them 99% of the time
while not meaningfully reducing security: we can have KWin only prohibit
XWayland apps from reading alphanumeric key events that don't have a
modifier key pressed at the same time. This still prevents those apps
from acting as keyloggers and reading your password or all the text you
type, but does allow those apps that have a legitimate need to read key
events for global shortcuts do so, because global shortcuts will involve
modifier keys being held down.

Due to the way the security modes work, making this change will also
allow XWayland apps to read non-alphanumeric keystrokes without any
modifiers being held down, but that's also fine for security since you
can't use any of those keys to type text or passwords.
2024-03-08 15:51:41 +00:00
Łukasz Patron
f5cb109a87 xwayland: Disconnect xwaylandEavesdropsMouseChanged signal on finish
It appears that this was missed in 183637502d.
2024-03-08 11:57:10 +00:00
Vlad Zahorodnii
e2cbed7060 Port IdleDetector to QBasicTimer
QBasicTimer is lighter and it properly handles timeout values bigger
than INT32_MAX.

CCBUG: 482077
2024-03-08 13:12:09 +02:00
Vlad Zahorodnii
18e414443e Add timeout assert in IdleDetector
CCBUG: 482077
2024-03-08 11:09:42 +02:00
Patrik Fábián
40b8637ab8 xdgshellwindow: Always update window position and size along all axes when fully miximizing window
BUG: 482086
2024-03-08 08:33:56 +00:00
Nicolas Fella
7078f4e3af Fix sending window to all desktops
NET::OnAllDesktops is a special desktop number (-1), desktopForX11Id will not return a desktop for it

When all desktops are requested pass an empty desktop list, the following code will handle it appropriately

BUG: 482670
2024-03-08 08:21:29 +00:00
l10n daemon script
2103eb8d16 GIT_SILENT Sync po/docbooks with svn 2024-03-08 01:20:07 +00:00
Nate Graham
7992d01fbd kcms/effects: add keywords for newly-introduced cursor effects
BUG: 482607
FIXED-IN: 6.1
2024-03-07 10:35:25 -07:00
Vlad Zahorodnii
b674b458df Rename Workspace::updateClientArea as Workspace::rearrange
We need to re-arrange layer shell surfaces, compute new struts and adjust
the windows in a single step.

Workspace::updateClientArea() is the best candidate for that, so this change
repurposes that function from computing work areas to a generic relayouting
function.

CCBUG: 482361
2024-03-07 13:41:02 +02:00
Vlad Zahorodnii
a489bfa12c wayland: Fix windows shrinking when output layout changes
When the output layout changes, the Workspace is going to update the
struts and then go through every window and see whether it should be
moved or resized.

On the other hand, the layer shell windows react to output changes on
a timer. Furthermore, it's not synchronized with the workspace rearranging
the managed windows. It means that when Workspace::desktopResized() runs,
the panel struts can be slightly outdated, i.e.

- An output layout change occurs
- Workspace::desktopResized() is called but the struts can be wrong
- some time later, LayerShellV1Integration::rearrange is called, it
  fixes layer shell window geometries and struts
- after the layer shell integration has finished rearranging the
  layer shell windows, it calls Workspace::desktopResized(), but the
  damage had already been caused

With the proposed change, the Workspace and the LayerShellV1Integration
will rearrange the windows in sync.

CCBUG: 482361
2024-03-07 13:41:01 +02:00