Commit graph

24818 commits

Author SHA1 Message Date
Vlad Zahorodnii
ebf6bd3a33 autotests: Move plasmashell bits from testMoveResizeWindow to testPlasmaSurface
Move the plasmashell specific bits to testPlasmaSurface so it's all
encapsulated and easy to drop in the future.
2023-05-23 18:00:50 +00:00
Vlad Zahorodnii
1c87a804f0 autotests: Port testShowingDesktop to layer-shell 2023-05-23 18:00:50 +00:00
Vlad Zahorodnii
05695d7f1b autotests: Avoid binding plasmashell global in tests that don't use it 2023-05-23 18:00:50 +00:00
Bharadwaj Raju
539b6bb6ac XdgPopupWindow: Allow position to be set by Plasma
This lets Plasma itself control the position of popup windows such as
Plasma tooltips. transientPlacement() now returns the position set by Plasma
if available.

BUG: 463272
2023-05-23 13:41:43 +00:00
Vlad Zahorodnii
2aba3deca4 wayland: Drop screen edge support in XdgToplevelWindow
Use kde_screen_edge_v1 + layer surface instead.
2023-05-23 13:02:14 +00:00
Vlad Zahorodnii
cdb8887a15 wayland: Drop strut support in XdgToplevelWindow
Use layer_surface.set_exclusive_zone instead.
2023-05-23 13:02:14 +00:00
Vlad Zahorodnii
9d0bb1bff7 autotests: Remove incorrect test
StrutsTest::testLeftScreenSmallerBottomAligned() used to pass because
one of the previous tests changes the maximize policy to maximize.

A window will be maximized only if it's larger than the maximize area
but smaller than the screen area. That's not the case and the test makes
an incorrect assumption about how X11Windows are placed.
2023-05-23 13:02:14 +00:00
Vlad Zahorodnii
006ab40e44 wayland: Make LinuxDmaBufV1ClientBuffer private
dmabuf related code can rely on DmaBufAttributes instead, so let's make
LinuxDmaBufV1ClientBuffer private to make graphics buffer handling
generic.
2023-05-23 09:39:19 +00:00
Vlad Zahorodnii
6b2f46ca1f autotests: Remove unused outputbackend.h includes 2023-05-23 11:42:32 +03:00
Vlad Zahorodnii
cab0765947 autotests: Use layer-shell based panels 2023-05-23 10:48:31 +03:00
Mouse Zhang
f3e4495e44 plugins/qpa: initialize buffer in backingstore
BUG: 437062
2023-05-23 06:23:21 +00:00
l10n daemon script
79fd2a4937 GIT_SILENT Sync po/docbooks with svn 2023-05-23 03:43:34 +00:00
l10n daemon script
ba157fc3a7 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-05-23 03:29:49 +00:00
Aleix Pol
d87f270539 EffectTogglableState: Improve the documentation
Explains the use and life-cycle of the gesture objects
2023-05-22 17:44:04 +00:00
Aleix Pol
33c3a60aa7 Rename TogglableState -> EffectTogglableState 2023-05-22 17:44:04 +00:00
Aleix Pol
ad68d6860e globalshortcuts: Do not ignore duplicated shortcuts
If a shortcut has been registered several times, we can activate them several
times as well. Otherwise we just registered the first one that was introduced.
This also makes it impossible to use certain shortcuts depending on the
state.
2023-05-22 17:44:04 +00:00
Aleix Pol
7c5c77d53b desktopgrideffect: Adopt TogglableState
Removes a bunch of copy-pasted code and makes the trigger gesture the mirror
of the activation. So it opens with a 4 finger swipe up and it closes with
these 4 fingers back down.
2023-05-22 17:44:04 +00:00
Aleix Pol
4eeadb6a9f fix ci 2023-05-22 17:44:04 +00:00
Aleix Pol
1b7a48de40 effects: Move the TogglableState class into a reusable space 2023-05-22 17:44:04 +00:00
Aleix Pol
bb8e5458a7 overview: Split out the state managing code into a separate class
This way it can be used by other effects eventually.
2023-05-22 17:44:04 +00:00
Aleix Pol
4c3d3053ab overview: Make the deactivation gesture to be the inverse of the activation
It is not intuitive that one needs to use the same gesture to activate
and deactivate an effect. Make the deactivation the inverse of the
activation instead.
2023-05-22 17:44:04 +00:00
l10n daemon script
6cf26c615a GIT_SILENT Sync po/docbooks with svn 2023-05-22 02:28:08 +00:00
l10n daemon script
33fb2ccc40 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-05-22 02:23:28 +00:00
l10n daemon script
91efcebbf1 GIT_SILENT Sync po/docbooks with svn 2023-05-20 02:22:00 +00:00
l10n daemon script
a7b6071f6b 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-05-20 02:20:24 +00:00
Vlad Zahorodnii
83261fc82a wayland: Implement kde-screen-edge-v1
It's needed to port the plasma panel to the layer shell protocol.
2023-05-19 13:36:38 +00:00
l10n daemon script
643a5f53e5 GIT_SILENT Sync po/docbooks with svn 2023-05-19 02:20:45 +00:00
Nate Graham
7f277bdfe9 plugins/overview: close when double-clicking on a desktop
Now that a single-click on a desktop in the desktop bar switches Virtual
Desktops within the Overview effect, it would be nice to have an easy way
to also trigger the prior behavior of switching and also closing the effect.

This can be accomplished by letting people double-click on a desktop to
both switch to it and also close the effect.

I found myself doing this automatically; IMO it feels quite natural.

BUG: 469307
FIXED-IN: 6.0

@teams/usability
2023-05-18 20:12:08 +00:00
Xaver Hugl
ecc66a03d0 backends/drm: force a modeset after tty switches with legacy
We don't know what the current mode is, or if the display is even enabled
or whatever. Always do a modeset to be sure everything is correct

BUG: 469280
2023-05-18 10:19:25 +00:00
Vlad Zahorodnii
d3c82fa103 plugins/magiclamp: Make it look good with hidden panels
If the panel is hidden, the animation can be clipped some distance away
from the screen edge. To fix that, move the icon offscreen.
2023-05-18 06:53:57 +00:00
Vlad Zahorodnii
2ff040a744 plugins/slidingpopups: Fix a crash on compositing restart
The sliding popups effect can be unloaded while there's still an active
animation for a closed window.

If that happens, the EffectsHandler::windowDeleted signal may be emitted
when the EffectWindowDeletedRef objects are destroyed. It happens after
the SlidingPopupsEffect destructor.

The sliding popups effect also has an EffectsHandler::windowDeleted
slot.

So, the problem is that m_animationsData gets destroyed first, then
m_animations is destroyed next. When m_animations is destroyed, the
deleted references will be released and EffectsHandler::windowDeleted
will be emitted. SlidingPopupsEffect::slotWindowDeleted will access
m_animationsData whose memory has been just released.

In order to prevent crashing, this change ensures that animations are
canceled while m_animationsData is still valid.
2023-05-18 06:26:36 +00:00
l10n daemon script
a3bc2abaf1 GIT_SILENT Sync po/docbooks with svn 2023-05-18 02:21:31 +00:00
Ismael Asensio
2449b58974 tiles: Adjust padding between windows
Make the total padding between windows equal to the padding against the
screen borders by applying just half of it on the common borders.

Adjust tests accordingly.

BUG: 469720
FIXED-IN: 5.27.6
2023-05-17 23:18:59 +02:00
l10n daemon script
dde4f5d03c GIT_SILENT Sync po/docbooks with svn 2023-05-17 02:24:12 +00:00
l10n daemon script
f720cf699b 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-05-17 02:20:11 +00:00
Natalie Clarius
9a3da09899 Refine order of previous/next screens in Workspace::findOutput
A screen should be considered further top, and therefore more previous, only it is strictly above the other with no vertical overlap, and not if only the vertical center is higher while they are horizontally on a line. Otherwise, on a left to right setup with screens of different resolutions aligned at the edges (and thus different vertical centesr), the order will be unintuitive.

BUG: 467996
FIXED-IN: 5.27
2023-05-16 07:54:06 +00:00
Antonio Russo
966416cb60 [script] Find and interact with windows
This patch adds mechanisms to find and interact with windows to the
scripting API:

 - workspace.windowAt provides a way to list the windows at a given
   location on the screen.
 - workspace.stackingOrder provides a list of all windows in the order
   they are stacked on the screen.
 - workspace.raiseWindow provides a mechanism to bring a given window to
   the top of that list, making it visible above all others.

Signed-off-by: Antonio Russo <aerusso@aerusso.net>
2023-05-16 06:29:29 +00:00
Vlad Zahorodnii
ea543ebe14 effects/magiclamp: Improve code readability
Code repetition is not great, but it's extremely hard to read the magic
lamp code because of the SET_QUADS macro.
2023-05-16 06:03:38 +00:00
Vlad Zahorodnii
00a1a506d1 effects/magiclamp: Make it look good with floating panels
The magic lamp literally "squashes" the window through the window icon
in the task manager.

It's assumed that there's nothing below the panel, so the magic lamp
doesn't perform any clipping.

With floating panels, it's not the case. So let's clamp the x or the y
coordinates when the window moves horizontally or vertically,
respectively, in order to ensure that the window is not visible in the
gap between the floating panel and the screen edge.

BUG: 361121
BUG: 466177
2023-05-16 06:03:38 +00:00
l10n daemon script
d13bf01588 GIT_SILENT Sync po/docbooks with svn 2023-05-16 02:35:23 +00:00
Aleix Pol
d6b07b313f libkwineffects: Stop including xcb/xcb.h everywhere
Provide a kwinxcb.h header file instead that offers the xcb-specific bits
from that API. It helps keep kwin effects disconnected from XCB.
2023-05-15 18:59:46 +00:00
Aleix Pol
43291d971a effects: Do not spread the XCB dependency to every effect 2023-05-15 18:59:46 +00:00
Xaver Hugl
afc5567651 Implement initial support for color management and HDR
This is done by converting from the sRGB + gamma 2.2 input from clients
to linear with the color space of the output (BT.709 or BT2020 atm) in
a shadow buffer, and then convert from the shadow buffer to the transfer
function the output needs (sRGB or PQ).
2023-05-15 17:01:03 +00:00
Xaver Hugl
644e31f389 backends/drm: add colorspace, degamma, alpha and pixel blend mode properties
Even if we won't use all of them in the near future, they still need to
be set to avoid issues with other compositors
2023-05-15 17:01:03 +00:00
Xaver Hugl
2fb95eb80c utils/edid: add color and HDR information 2023-05-15 17:01:03 +00:00
Vlad Zahorodnii
124d915408 effects/magiclamp: Improve animation direction heuristic
If the panel is placed between two outputs, the magic lamp can pick
wrong direction and the animation will look bad.

This change improves the direction heuristic by making it analyze the
position of the center point of the screen where the window is relative
to the center point of the icon in the task manager.

The screen center is used instead of the window center in order to
properly handle edge cases such as where the window center is offscreen.

For example, if the panel is vertical (e.g. it's attached to the left
side of a monitor), the magic lamp will pick the following directions:

- if the window is to the left side of the panel, the window will be
  animated so it moves to the right hand side
- if the window is to the right side of the panel, the window will be
  animated so it moves to the left hand side

Without this change, the window will always move to the left hand side.

BUG: 463581
2023-05-15 19:31:06 +03:00
Vlad Zahorodnii
223b01f9e7 wayland: Reevaluate layer shell window layer
Currently, if the layer shell surface's layer changes, the Window's
layer is not synchronized with it.
2023-05-15 08:32:37 +00:00
Vlad Zahorodnii
ad402510d3 wayland: Don't deduce layer shell window layer based on window type
It seemed like a good idea at the time, but it conflicts with the client
side wishing to change the layer.
2023-05-15 08:32:37 +00:00
Vlad Zahorodnii
5ccb543e89 Use flooredPoint() in pointer constraint tests
.toPoint() doesn't work as expected when the pointer has fractional
coordinates and it's near constraint region boundaries.
2023-05-15 07:36:26 +00:00
Vlad Zahorodnii
6c71b87200 wayland: Fix null pointer constraint region handling
If the pointer constraint region is null, the input region must be used
instead. If the pointer constraint region is valid, it should be
intersected with the input region.

BUG: 457021
2023-05-15 07:36:26 +00:00