Commit graph

25718 commits

Author SHA1 Message Date
Nicolas Fella
f399d2442a Adapt to plasma-framework targets being renamed 2023-12-04 19:43:47 +00:00
Yifan Zhu
c441ce5cd1 Avoid accidental mixing of qreal and int
The code for placeSmart uses ints to store coordinates and dimensions,
but the various methods of QRectF return qreal types, which can be
non-integers under fractional scaling, causing multiple issues.

This commit explicitly converts the needed quantities to ints,
avoiding the issues.

Previously, the code relied on the assumption that
y = area.y() + area.height(); implies !(y < area.y() + area.height()).
This doesn't always hold when mixing qreals and ints, causing infinite loops
under fractional scaling when attempting to open large windows, as
reported in BUG 477820.

This commit also extends the fix in 5502ce9 to fractional scaling scenarios.
The ceiling of client widths and height is used, instead of the implicit
floor, which caused BUG 477886.

BUG: 477820
BUG: 477886
2023-12-04 08:59:58 -08:00
Nate Graham
e28ec8ada1 kcms/screenedges: fix defaults indicator for "remain active" checkbox
The initial value was being initialized to true despite the setting
being off by default, and the default checker was highlighting when it
was false, not when it was true.

BUG: 477329
FIXED-IN: 6.0
2023-12-04 14:58:25 +00:00
l10n daemon script
86a4906bf8 GIT_SILENT Sync po/docbooks with svn 2023-12-04 02:13:39 +00:00
l10n daemon script
5b4dce93e3 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"
2023-12-04 02:08:23 +00:00
l10n daemon script
3cc8e9f13b GIT_SILENT Sync po/docbooks with svn 2023-12-03 02:12:56 +00:00
l10n daemon script
ad07733e18 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"
2023-12-03 02:07:06 +00:00
l10n daemon script
5533b50d66 GIT_SILENT Sync po/docbooks with svn 2023-12-02 02:12:25 +00:00
l10n daemon script
6a494f9364 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"
2023-12-02 02:07:11 +00:00
Vlad Zahorodnii
dd9e04fb18 Fix -Wdeprecated-declarations 2023-12-01 12:06:48 +02:00
Bharadwaj Raju
e5753ea336 Make autohide screen edges use the same activation delay setting as other edges
Makes it possible to easily target things in a window near your panel edge,
without bringing up your panel.

The `m_client` condition this MR removes appears to have been added solely to make autohiding panels appear instantly. See c4140d6f4e.

BUG: 267277
2023-12-01 08:09:35 +00:00
l10n daemon script
83d0764870 GIT_SILENT Sync po/docbooks with svn 2023-12-01 02:15:13 +00:00
l10n daemon script
0468860b0d 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"
2023-12-01 02:08:56 +00:00
Vlad Zahorodnii
f5f343d33e opengl: Drop scale arg in GLTexture::render()
It makes the API confusing and in many places, the target size is
already in device pixels.
2023-11-30 13:55:55 +00:00
Kai Uwe Broulik
cecd630b2e wayland/xdgforeign_v2: Create UUID without braces
They can be annoyin to type on the terminal, requiring escaping and what not.
The protocol doesn't specify the format, so we can just drop them.
2023-11-30 13:17:08 +00:00
l10n daemon script
8dc297db71 GIT_SILENT Sync po/docbooks with svn 2023-11-30 02:09:51 +00:00
l10n daemon script
2ad4bb6de3 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"
2023-11-30 02:05:05 +00:00
Vlad Zahorodnii
7787920277 cmake: Improve readability
Indent target_link_libraries of kwin to improve code readability. As is,
PUBLIC and PRIVATE blend with target names and therefore they are harder
to spot.
2023-11-29 14:21:36 +00:00
l10n daemon script
646b508efe GIT_SILENT Sync po/docbooks with svn 2023-11-29 14:17:09 +00:00
l10n daemon script
2b29e702dc 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"
2023-11-29 14:10:58 +00:00
Vlad Zahorodnii
5e90452d08 Add more closed window checks
The stack contains closed windows, so we need to guard against them.

BUG: 475423
2023-11-29 13:56:07 +00:00
Vlad Zahorodnii
c0b387bf5e backends: Drop waylandServer dependency
Backends dependending on the wayland server is not great, it makes them
less reusable and creates a strict instantion order that doesn't fully
make sense.
2023-11-29 13:31:47 +00:00
Vlad Zahorodnii
19c6425607 plugins/screencast: Use bilinear min/mag filter
Use GL_LINEAR so region screencasts look nicer when the output content
is magnified or minified.
2023-11-29 13:16:54 +00:00
Vlad Zahorodnii
6f7e06bf9e plugins/screencast: Clean up embedded cursor painting code
The MVP uniform is set twice, in addition to that, the cursor size is
scaled more than once.
2023-11-29 13:16:54 +00:00
Jonathan Esk-Riddell
cea6368e72 Update version number for 5.90.0
GIT_SILENT
2023-11-29 10:24:10 +00:00
Vlad Zahorodnii
40dbe9eb66 plugins/startupfeedback: Fix glitches with fractional scaling
Snap the bouncy icon to the pixel grid and if necessary stretch it.
2023-11-29 08:04:51 +00:00
Timothy Bautista
a25ae5261d plugins/morphingpopups: add easing curves
This makes the motion of the effect more consistent with other
window-related effects, which typically also use some form of a
cubic curve.
2023-11-29 07:47:12 +00:00
Yevhen Popok
0b1bc516e3 plugins/magnifier: Add missing "Zoom In" alt. shortcut
Make the "Magnifier" and "Zoom" effects use the same shortcuts for "Zoom In"
2023-11-29 07:27:39 +00:00
Yevhen Popok
0f31ab89c8 plugins/zoom: Add missing "Zoom In" default alt. shortcut 2023-11-29 07:27:39 +00:00
Vlad Zahorodnii
5ba0d2c933 plugins/screencast: Simplify OutputScreenCastSource::render()
The texture size is already in device pixels.
2023-11-29 07:15:35 +00:00
l10n daemon script
8452b1414e GIT_SILENT Sync po/docbooks with svn 2023-11-29 02:14:33 +00:00
l10n daemon script
c8122e4cd5 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"
2023-11-29 02:08:23 +00:00
David Edmundson
d18db74d5f XWayland: no forwarding with Shift keys
The shift key doesn't make sense to be one of the keys that will trigger
KWin to allow XWayland apps to process all keys when it's pressed,
because there aren't generally global shortcuts that consist of Shift
plus an alphanumeric character key. That's because this key combination
is used to type capital letters.

So we can safely exclude the shift key to improve security against key logging and not break any global
shortcut-using XWayland apps for people using this feature.

The shift key on it's own is still forwarded as that's a non-character key.
2023-11-28 20:10:37 +00:00
Vlad Zahorodnii
831064f351 plugins: Add shakecursor plugin
This plugin helps you locate the cursor by enlarging it when the pointer
is quickly moved back and forth.

BUG: 432927
2023-11-28 16:36:26 +00:00
Vlad Zahorodnii
5696081cf7 plugins/startupfeedback: Add hidpi support on wayland 2023-11-28 18:18:16 +02:00
Vlad Zahorodnii
7233616c2c plugins/startupfeedback: Fix bouncing icon being too small on wayland
We need to be careful about the target rect when painting a hidpi image
onto a lodpi image.

This is the case when the startup feedback generates bouncing frames.
The icon pixmap may be hidpi, while the result image has device pixel
ratio 1.
2023-11-28 16:06:33 +00:00
Vlad Zahorodnii
784d48ef52 Port away from deprecated KConfigBase::group() api 2023-11-28 10:02:03 +00:00
Vlad Zahorodnii
c8d4f26a9f plugins/screencast: Fix hidpi region screencasting
Currently hidpi region screencasting is broken because output textures
are inappropriately scaled.

The orthographic projection is set up with logical pixels, but the
remaining rendering code uses "1 / m_scale" scale factor, which is wrong.

In order to fix hidpi and also simplify rendering logic, this change
makes rendering code use logical coordinate system. It's okay to do in
screencasting because we don't need to worry about snapping to the pixel
grid.

BUG: 476858
BUG: 476859
2023-11-28 08:52:12 +00:00
David Redondo
ff76c8581d Do not wait for timer if there are no open windows
If there were no open windows KWin would wait until the timer ran
out and return false signifying that some windows didnt close.
BUG:477573
FIXED-IN:6.0
2023-11-28 09:08:47 +01:00
l10n daemon script
a705c172ab GIT_SILENT Sync po/docbooks with svn 2023-11-28 02:13:11 +00:00
Oliver Beard
9b73cdeeba Find WaylandClient in non-testing builds 2023-11-27 17:30:41 +00:00
Aleix Pol Gonzalez
b853de3d29 Allow building KWin without KGlobalAccel
Signed-off-by: Falko Becker <falko.becker@mbition.io>
2023-11-27 17:07:28 +01:00
Aleix Pol Gonzalez
25a976e559 Fix build Reduced kwin
GuiPrivate is also needed for the OffScreenQuickView

Signed-off-by: Falko Becker <falko.becker@mbition.io>
2023-11-27 17:07:28 +01:00
Doğukan Korkmaztürk
d4103fa9c1 backends/drm: Support hardware cursors on NVidia GPUs
This change enables the use of HW cursors on Nvidia GPUs. The problem
with the current approach is that the cursor plane requires a linear
buffer to be attached on the Nvidia hardware. However, Nvidia GPUs
cannot render to a linear texture, this is why DRM_FORMAT_MOD_LINEAR is
marked as "external only" when the supported modifiers are queried by
eglQueryDmaBufModifiersEXT(). Since the EGL render backend in KWin
cannot find a common DRM format modifier between what the cursor plane
needs and what the GPU can render to, it falls back to the SW cursor
implementation.

With this change, when the EGL renderer detects that a plane only
supports linear buffers but rendering directly to a linear buffer is not
possible, it copies the rendered content into a linear dumb buffer, and
attaches that buffer to the plane instead of using the rendered buffer
directly.
2023-11-27 10:47:12 -05:00
Kai Uwe Broulik
7bd9ae8d0b helpers/killer: Modernize UI
This overhauls the kill prompt UI to make it more modern and more
easily to grasp.

* Reduce the amount of text and redundancy.
  Give the window a title and drop the "app is not responding" heading.
  Try to remove the application name from the displayed window title.
  Also use the bold emphasis used in other places like deleting files.

* Use the application icon if available with a warning overlay.
  This makes it easier to grasp which application it's talking about.

* Move technical information (like PID and hostname) into an
  expandable "Details" section.

KGuiAddons has been implicitly pulled in by KConfigWidgets already.
2023-11-27 14:10:15 +00:00
Kai Uwe Broulik
5c96c38e39 Support kill prompt for XdgTopLevelWindows
Instead of killing the window without asking, show the kill prompt
like it's done for X11 windows.

The window in question is exported through XDG foreign so the kill
helper can parent itself to it, and an activation token is also provided.

Also, the more contemporary desktop file name is now used for
identification rather than window class.

A no-display desktop file is installed for the kill helper so that it
can get a proper window icon and suppress startup notification.
2023-11-27 14:10:15 +00:00
Kai Uwe Broulik
9b7718459e xdgforeign: Allow exporting surfaces internally
Without a client asking for it. This way we can send a surface
to another helper application, such as the window killer.

An ExportedSurface wrapper class is introduced which represents
an exported surface in a windowing-system independent way.
2023-11-27 14:10:15 +00:00
Kai Uwe Broulik
2b868edb9e xdgshell: Use killPingTimeout option
This makes it consistent with the timeout used on X11.

The current ping timeout was also generally quite short, causing apps
to desaturate for brief moments when they were busy e.g. starting up
or loading large files.
2023-11-27 14:10:15 +00:00
Kai Uwe Broulik
28c1545beb wayland_server: Initialize integrations in initWorkspace
At this point KWin options are available.
2023-11-27 14:10:15 +00:00
Kai Uwe Broulik
214e471a50 Introduce KillPrompt class
This encapsulates running and querying for the killer helper
and allows to more easily re-use it for Wayland windows.
2023-11-27 14:10:15 +00:00