Commit graph

715 commits

Author SHA1 Message Date
David Edmundson
49d80162c5 [effects/blend] Fix opacity value of old window
We animated from 1.0 to 0.0, however this does not take into account
that a previous effect may also have adjusted the opacity.

We should multiply accordingly.
2022-08-08 08:36:27 +00:00
Xaver Hugl
41c23fa70e effects/windowview: always set the mode when activating with gestures
Otherwise the mode uses is defined by the last time the effect was used and
thus not very predictable
2022-08-06 16:01:56 +00:00
Arjen Hiemstra
77af052f9d WindowView: Add "show windows from class on current desktop" mode
We currently have "windows from current desktop" and "windows from
class" but not one combining both. This adds that mode along with a
(default empty) shortcut and border activation.

BUG: 413342
2022-08-05 13:52:12 +00:00
ivan tkachenko
aaa5e6fee3
effects/private: Fix ExpoLayout reflowing in Desktop Grid while dragging
This fixes makes ExpoLayout independent of its position on a screen,
which in turn stops it from randomly reflowing while dragging a virtual
desktop across desktop grid. It also removes an unwanted animation at
the end of activation of desktop grid: desktops move in place and then
windows proceed to adjust themselves resulting in a double animation.

FIXED-IN: 5.25.5 5.26
2022-08-04 21:04:09 +03:00
Xaver Hugl
8955a2420e replace all uses of QScopedPointer with std::unique_ptr 2022-08-04 12:30:09 +00:00
ivan tkachenko
2fd4106588
effects/private: Prevent fading windows from moving downward in WindowView effect
Inheriting "active" state was meaningless, since "active" state binds
position to a ExpoCell which itself is in a disabled state.

FIXED-IN: 5.25.5 5.26
2022-08-03 23:55:06 +03:00
ivan tkachenko
b6f6e7f15a
effects/desktopgrid: Fix panel opacity animation during transition
It did fade back in, but at the beginning of animation it used to just
instantly disappear.

FIXED-IN: 5.25.5 5.26
2022-08-03 00:59:10 +03:00
Marco Martin
027ca22908 When an arrow key is not accepted look for adjacent views
When no qml items manage the arrow key event, the root item will manage it looking to give focus to a view in the given direction derived from the arrow key

BUG:455783
2022-08-02 15:59:26 +00:00
l10n daemon script
5513291dbe 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-08-02 01:45:59 +00:00
l10n daemon script
84e5d92f67 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-07-31 01:49:29 +00:00
ivan tkachenko
54e74df57b
effects/private: Actually fade out minimized windows on exit
This is most likely just an oversight/omission from the times when the
component was actively developed. There are five states total, including
one for realtime interactions; four others need to be transitioned to.
2022-07-28 18:31:38 +03:00
ivan tkachenko
2bca18bc5f
effects/overview: Fix animation of windows scaling back from a desktop bar
Due to nondeterministic nature of signal propagation in QML, changing
both targetScale and state depending on dragHandler's activity could
result in targetScale wrongly updating before the state change(and thus
applied property changes and subsequent animated transition).

This fixes a bug when a window dragged to the top (but not onto another
desktop) would animate its position back to its original position on a
heap, but the scale would remain constant until the end of animation
and only then rapidly jump back to a normally scaled state.
2022-07-28 18:31:36 +03:00
David Edmundson
89be63f600 Port windowStepUserMovedResized to floating geometry 2022-07-28 11:55:43 +00:00
Vlad Zahorodnii
9177fd1835 kwineffects: Make clientArea() return a QRectF
Make EffectsHandler::clientArea() return same type as
Workspace::clientArea().
2022-07-28 10:58:59 +00:00
ivan tkachenko
51326dfb85
effects/private: Group Repeater's alias properties together 2022-07-28 11:02:37 +03:00
ivan tkachenko
766d64c1e5
effects/private: Port potential misuse of a dragHandler to activeDragHandler
There are two drag handlers, and an `activeDragHandler` property to
switch between them. That's what other code is doing in this component.
2022-07-28 11:02:36 +03:00
ivan tkachenko
1c1cf61b1f
effects/private: Drop unused property dragHandler 2022-07-28 11:02:36 +03:00
ivan tkachenko
aa6200495c
effects/private: Make WindowHeapDelegate dragHandler less confusing
There were too much `dragHandler` identifiers per square meter of code.
2022-07-28 11:02:36 +03:00
ivan tkachenko
f48b306665
effects/private: Set required property for default WindowHeapDelegate
Otherwise this WindowHeap type is not usable without custom delegate.

    /usr/lib/qml/org/kde/kwin/private/effects/WindowHeap.qml:111:23:
        QML Component: Cannot create delegate
    /usr/lib/qml/org/kde/kwin/private/effects/WindowHeapDelegate.qml:21:5:
        Required property windowHeap was not initialized
2022-07-28 11:02:36 +03:00
ivan tkachenko
da3b731c1a
effects/overview: Clean up QML/JavaScript code 2022-07-28 11:02:35 +03:00
ivan tkachenko
94168cd7c1
effects/private: Drop unused properties 2022-07-28 11:02:34 +03:00
ivan tkachenko
12b72d614e
effects/private: Port ExpoLayout to using anchors 2022-07-28 10:45:43 +03:00
ivan tkachenko
22156777fb
effects/desktopgrid: Add explicit spacing for buttons layout 2022-07-28 10:45:41 +03:00
ivan tkachenko
3da3489aaa
effects/private: Don't show another window's hover/highlight while dragging
This produced really weird impression that if you will drop a window it
will be actually dropped on another window??
2022-07-27 20:15:50 +03:00
ivan tkachenko
54917f038e
effects/private: Raise currently dragged window higher than anything
BUG: 456936
FIXED-IN: 5.25.4 5.26
2022-07-27 18:08:00 +03:00
ivan tkachenko
074fed313b
effects/desktopgrid: Fix dragging and swapping desktops on a grid
Amends 00ba4aedcc.
2022-07-27 16:34:39 +03:00
ivan tkachenko
f1a45b6509
effects/private: Drop opacity binding inside WindowHeapDelegate
This targetOpacity is nowhere to be found. This is a relic of past
development. Currently code that needs to alter opacity based on drag
state does so externally by setting opacity on a delegate as a whole.
2022-07-27 15:24:50 +03:00
ivan tkachenko
7b24df247d
effects/overview: Fix anchor on a placeholder message
ScreenView.qml:202:17: Unable to assign QQuickItem to QQuickAnchorLine
2022-07-27 13:19:42 +03:00
Vlad Zahorodnii
726f97d2a6 effects/slidingpopups: Fix slide offset
Code such as "screenRect.bottom() - windowGeo.bottom()" assumes that
both screenRect and windowGeo have the same type. At the moment, it's
not the case, screenRect has QRect type and windowGeo has QRectF type,
so the calculated offset will be off by one.
2022-07-27 07:09:14 +00:00
David Redondo
0fc4bf7fba Remove another unneded include
GIT_SILENT
BUG:457152
2022-07-26 13:32:27 +02:00
David Redondo
1f9c317878 Remove unneeded include
BUG:457152
2022-07-26 10:06:14 +00:00
Niklas Stephanblome
8407f88585 effects/overview: Add window filtering
This adds window filtering to the Overview effect. This satisfies both
Overview users' needs and the workflow of Windowview: When the user
starts typing, windows are filtered by default. If there is no matching
window, then the Milou UI is shown, including the option for opening a
new app is shown--the same one that currently gets shown when the user
starts typing. This leads to a very seamless experience, where the user
can type any app name and they will get it, no matter if it's already
opened or not.
2022-07-25 16:18:06 +00:00
ivan tkachenko
df6331b60a effects/colorpicker: Fix picking colors
Due to the wrong buffer format, the function failed with
GL_INVALID_OPERATION error, which was silently ignored by the effect.
It resulted in the constant phantom color being returned over and over
again.

Co-Authored-By: David Edmundson <kde@davidedmundson.co.uk>
BUG: 454974
FIXED-IN: 5.24.7, 5.25.4, 5.26
2022-07-22 19:51:11 +00:00
David Redondo
6576a83aee Add outputlocator effect
An effect that implements the "identify" functionality of
the screen configuration kcm. It displays a label on each
screen that identifies the screen.
Doing this as a kwin effect allows to correctly handle
the case when outputs are mirrored (on wayland) compared to
absolute positioning of windows which end up on top of each other.
2022-07-20 07:01:05 +00:00
l10n daemon script
ff9bfc2e3b 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-07-20 01:44:06 +00:00
David Edmundson
80fb713787 Support keyboard navigation between windows across desktops
If a DesktopView doesn't handle a keyboard navigation event it
propagates to main which then focusses the next desktop view and the
relevant window.

Empty desktops can also be selected.

BUG: 456068
2022-07-19 10:35:09 +00:00
David Edmundson
00ba4aedcc Make DesktopView a FocusScope 2022-07-19 10:35:09 +00:00
David Edmundson
9152df4b4f Accept keys in windowheap conditionally
In WindowHeap we currently always accept the keyboard event regardless
of whether the event was handled.

This will allow the event to propagate to other handlers
2022-07-19 10:35:09 +00:00
David Edmundson
a61719ddc4 Accept keys in windowheap conditionally
In WindowHeap we currently always accept the keyboard event regardless
of whether the event was handled.

This will allow the event to propagate to other handlers
2022-07-19 10:14:47 +00:00
Nate Graham
a0c8d4b24d WindowHeap: expand size of highlight
Currently, the highlight effect is not very visible because it only
barely peeks out of the window thumbnail. We can make it bigger by
making it peek out a little bit more, and also by including the window
title and icon (when visible) within it.

BUG: 454842
2022-07-17 02:55:01 +00:00
Kishore Gopalakrishnan
ed128064e3 Swapping desktops: only swap windows on current activity.
In the desktop grid effect, dragging an empty area of a desktop to
another desktop swaps all windows on the two desktops. This change makes
sure that this matches only windows in the current activity.

Was earlier fixed in
1e0b0c881e
, but the bug was reintroduced by the QML rewrite.

BUG: 386769
2022-07-15 08:26:08 +00:00
David Edmundson
7292af3d04 Use floating geometry throughout
With fractional scaling integer based logical geometry may not match
device pixels. Once we have a floating point base we can fix that. This
also is
important for our X11 scale override, with a scale of 2 we could
get logical sizes with halves.

We already have all input being floating point, this doubles down on it
for all remaining geometry.

- Outputs remain integer to ensure that any screen on the right remains
aligned.
 - Placement also remains integer based for now.
- Repainting is untouched as we always expand outwards
 			   (QRectF::toAdjustedRect().
 - Decoration is untouched for now
 - Rules are integer in the config, but floating in the adjusting/API
This should also be fine.

At some point we'll add a method to snap to the device pixel
grid. Effectively `round(value * dpr)  / dpr` though right now things
mostly work.

This also gets rid of a lot of hacks for QRect right and bottom which
are very
confusing.

Parts to watch out in the port are:
 QRectF::contains now includes edges
QRectF::right and bottom are now sane so previous hacks have to be
removed
 QRectF(QPoint, QPoint) behaves differently for the same reason
 QRectF::center too

In test results some adjusted values which are the result of
QRect.center because using QRectF's center should behave the same to the
user.
2022-07-14 10:04:46 +01:00
Bharadwaj Raju
1527a0cf13 Don't use Plasma-themed icons in Present Windows
BUG: 455368
2022-07-14 08:01:51 +00:00
l10n daemon script
c442f582a3 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-07-11 01:48:31 +00:00
Xaver Hugl
5451c7e0db windowview: handle windows from other virtual desktops better
Sometimes windows on other desktops are higher in the stacking order,
which causes them to unexpectedly jump above windows from the current
desktop in the effect.

To fix that, the z index is adjusted to be higher for windows on the active
virtual desktop, and windows from other desktops get reduced opacity in the
beginning of the animation
2022-07-08 17:03:16 +00:00
David Edmundson
df1938b8af Fix flickering in slide effect with multi screen
The slide effect translates all windows as we switch desktop. In a multi
screen setup we don't want windows to enter a different screen during
this animation.

The current code masks everything to the current output. This is broken
for any window that spans across screens even slightly. It will not be
visible during the transform then appear on top at the end.

The new algorithm is, for each screen in each window we crop the painted
area to the intersection of the screen and the screen's translated
position.
2022-07-06 14:25:57 +00:00
Vlad Zahorodnii
fa78de6219 kwineffects: Strip ScreenPaintData of transforms
ScreenPaintData provides a way to transform the painted screen, e.g.
scale or translate. From API point of view, it's great. It allows
fullscreen effects to transform the workspace in various ways.

On the other hand, such effects end up fighting the default scene
painting algorithm. For example, just have a look at the slide effect!
With fullscreen effects, it's better to leave to them the decision how
the screen should be painted. For example, such approach is taken in
some wayland compositors, e.g. wayfire, and our qtquick effects already
operate in similar fashion.

Given that, strip the ScreenPaintData of all available transforms. The
main motivation behind this change is to improve encapsulation of item
painting code and simplify model-view-projection code in kwin. It will
also make the job of extracting item code for sharing purposes easier.
2022-07-06 11:10:54 +00:00
Nate Graham
85e0d5ea55 effects/overview: make add/delete Virtual Desktop buttons consistent
These are proper nouns and should be capitalized. And let's consistently
use the term "Virtual Desktop", not just "Desktop" (which can be
confused for the desktop with the wallpaper).
2022-07-05 08:53:15 -06:00
Nate Graham
f53bb84009 effects/overview: clean up code for buttons with tooltips 2022-07-05 08:50:40 -06:00
Nate Graham
abbbc0b72c WindowHeapDelegate: add tooltip and accessibility info to close button
BUG: 456242
FIXED-IN: 5.26
2022-07-05 08:41:32 -06:00
l10n daemon script
fb57b71e75 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-07-04 01:48:22 +00:00
l10n daemon script
7d08e5f251 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-07-03 01:57:17 +00:00
l10n daemon script
c0307bb402 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-07-02 02:03:09 +00:00
Vlad Zahorodnii
5975cd95e7 effects: Make setting WindowHeap layout mode nicer
Expose only the layout object and set its mode using "layout.mode:"
syntax rather than expose the layout object and its properties in the
WindowHeap.
2022-07-01 07:13:31 +00:00
l10n daemon script
6fa6c3f20b 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-07-01 01:52:46 +00:00
Felipe Kinoshita
524e65813b effects/desktopgrid: Close windows on middle click
This makes it so that the windowview/overview/desktopgrid effects
all use the middle mouse button to close windows.

The previous behavior of pinning window is now assigned to the
right mouse button.

BUG: 456144
2022-06-30 20:23:17 +00:00
Xaver Hugl
84acb768ee effects: modernize some code
Mostly port away from manual memory management and clean up some headers
2022-06-29 10:34:50 +00:00
Vlad Zahorodnii
d6e9b8011a effects/slide: Save correct current position
effects->desktopCoords() returns the position of the desktop in pixels,
while we want the desktop grid coords, i.e. if the virtual desktop is in
the first row, second column, we want m_currentPosition to be (1, 0).
2022-06-27 12:13:12 +00:00
l10n daemon script
d228a3d16e 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-27 01:43:00 +00:00
l10n daemon script
aad0673961 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-24 01:42:09 +00:00
Niklas Stephanblom
6838b1132f Windowview: Fix broken keyboard navigation while filtering
After the 5.25 update, one could not see which window was highlighted until one
manually unfocused the SearchField and then pressed any key to refresh the WindowHeap.
Also, the searchbar would (most of the time) "absorb" the arrow keys so one had to
also unfocus it to really be able to select windows with they keyboard. 

With this change, there is always one window highlighted while filtering using the
search box. Also, one can select another window with the arrow keys without manually
unfocusing the searchbox. This heavily improves the keyboard functionality in this
effect that got lost with the 5.25 update of presentwindows to windowview and
resolves complaints about the keyboard navigation being buggy. 

BUG: 455633
BUG: 455764
BUG: 455099
BUG: 455586
BUG: 455753
FIXED-IN: 5.25.2
2022-06-23 17:13:57 +00:00
Vlad Zahorodnii
2ade8111de effects: Fix a type mismatch warning in WindowHeap
file:///data/projects/usr/lib/qml/org/kde/kwin/private/effects/WindowHeap.qml:55:9: Unable to assign null to QUuid
2022-06-23 11:57:50 +00:00
l10n daemon script
08d140982d 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-23 01:43:29 +00:00
David Edmundson
be5b23628f [effects] Fix QML after recent refactor
fd25e96969 looks like it attempted to
rename an alias and got out of sync.
2022-06-22 19:59:22 +01:00
Marco Martin
0534110eed Fix the math of the down gesture 2022-06-22 17:54:54 +02:00
Marco Martin
fd25e96969 Move WindowHeap delegate to own file
This makes easier for individual effects to personalize it
without adding ad-hoc api in the main WindowHeap class.
WindowHeap and WindowHEapDelegate are still quite coupled and thing can probably still be improved, but the code should be more readable already
2022-06-22 11:24:17 +00:00
Vlad Zahorodnii
d40aec0853 effects/desktopgrid: Allow switching between desktops using digit and function keys
C++ version allowed switching between virtual desktops by pressing
function keys (Fn) or digit keys.

BUG: 455292
2022-06-21 10:43:13 +03:00
Vlad Zahorodnii
a85960833b effects/screentransform: Do proper cross-fading
At the moment, the effect that animates the screen works as follows:

* render the screen before it's rotated in an offscreen texture
* after screen rotated, paint the offscreen texture in the first half of
  the animation but not the screen contents after rotation and in the
  second half of the animation, paint the live screen contents

This works but it doesn't take into account things such as blur (I can
see that the region around where the panel should be doesn't look as
expected).

This change makes the screen transform effect do proper cross-fading,
i.e. save the screen before it's rotated in an offscreen texture, render
the current screen in an offscreen texture, and produce the final result
by cross-fading between two offscreen textures in a shader.

Besides fixing the visuals of the effect, another motivation behind this
change is to reduce the number of ScreenPaintData transforms, which can
be very handy in simplifying item painting code.
2022-06-20 13:56:04 +00:00
Marco Martin
c1a536a527 Fix dragging especially by touch
The drag manager of a window now can take over from anything, so that
the events to initiate a drag are not stolen by the tap handlers
(fixes the drag starts only the second time is tried issue)

On wayland drag by touch was completely broken by the supportsclosewindows check,
now the touch drag handler is always active and the check of the property is done only
when the drag is over

BUG:455268
2022-06-20 10:11:04 +00:00
l10n daemon script
4699f8c0e2 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-20 01:54:30 +00:00
l10n daemon script
d86563a836 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-19 01:42:58 +00:00
Marco Martin
13e3630127 effects/windowview: Search on all screens
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
2022-06-17 14:55:39 +00:00
Vlad Zahorodnii
a6b5efd43d effects: Improve gesture handling in some effects
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.
2022-06-17 11:30:56 +00:00
Marco Martin
c61f0ad158 Don't use the plasma theme for icons in overview
don't attempt to use icons meant for the systray

BUG:455368
2022-06-16 13:55:25 +00:00
Marco Martin
e04542995e fix windows dragging in desktop grid
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
2022-06-16 09:50:01 +00:00
Vlad Zahorodnii
c7ba0a2567 effects/blur: Make shader code readable
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).
2022-06-16 08:26:28 +00:00
Vlad Zahorodnii
a4b41c84e1 effects/windowview: Redirect key events to search field
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
2022-06-16 10:26:36 +03:00
l10n daemon script
62b9d03784 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-16 01:55:02 +00:00
Vlad Zahorodnii
1725e22483 effects/slide: Ensure that there's only one visibility ref per window
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
2022-06-15 06:48:43 +00:00
l10n daemon script
58da3aff46 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-15 01:47:02 +00:00
Xaver Hugl
3c0ed5643b effects/windowview: do close animation after gesture ended 2022-06-14 08:47:39 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Xaver Hugl
0b27ce4d34 Make touchscreen gestures realtime 2022-05-11 15:08:43 +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
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
15a9744979 effects/windowview: correct gesture direction
BUG: 453427
2022-05-10 14:30:00 +00:00
Xaver Hugl
7eefc48536 effects/overview,windowview: restore ability to close windows 2022-05-10 09:49:36 +00:00
Méven Car
1dd12a064a Fix a couple unused warnings
GIT_SILENT
NO_CHANGELOG
2022-05-10 07:33:30 +02: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
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
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
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
Marco Martin
ae1937badc Remove completely present windows
since it has been replaced by windowview, and Desktop Grid
is ported as well, remove present windows which is effectively dead code
now

BUG:447001
BUG:362844
BUG:450487
BUG:453426
BUG:374481
BUG:185381
BUG:413342
BUG:451150
BUG:283333
BUG:315314
BUG:397500
BUG:321236
BUG:436572
BUG:335782
2022-05-06 11:37:17 +00:00
Marco Martin
7a4cabf328 QML version of the Desktop Grid effect
Replace completely the old desktop grid effect with a QML version.
Aims to feature parity and be a change as transparent as possible for the user.

BUG: 433071
BUG: 452625
BUG: 443971
BUG: 437121
BUG: 452925
BUG: 437928
BUG: 452439
BUG: 288530
BUG: 450254
BUG: 450106
BUG: 447832
BUG: 449960
BUG: 416576
BUG: 441862
BUG: 444859
BUG: 445999
BUG: 422117
BUG: 404627
BUG: 435483
BUG: 420744
BUG: 435482
BUG: 427055
BUG: 333445
BUG: 429120
BUG: 427391
BUG: 409295
BUG: 294322
BUG: 356955
FIXED-IN: 5.25
2022-05-06 10:44:38 +00:00
l10n daemon script
0130b53126 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-06 01:45:37 +00:00
Marco Martin
376ee357db Make windowview replace present windows
* give windowview the ability to show windows from current desktop, all
desktops or current class
* invokable from shortcuts screen edges or gestures
* add a search field to quickly filter
* current present windows effect still present but only internal as is used by desktop grid, which should eventually be ported as well

This can be done either from windowview or overview, tough note that some of the duplication from overview added in windowview is necessary regardless, as WindowHeap, the shared qml part needs some properties exposed from the c++ part.
Implementation wise I'm ok for it being in either place, but i think the functionality of present windows needs to be preserved, otherwise would be a completely unacceptable regression, namely:

* Behavior of what now are the ctrl+f7,f10 and f11 global shortcuts, showing windows of current app (invokable by shoortcut instead of having to use the pointer), windows of current desktop (the only thing overview does atm) or all desktops
* filter on typing, as opposed to invoking krunner. main use case of present windows is quickly switching, and filtering is the most helpful feature, some people do like krunner instead, but is completely out of place for my use case, and i suspect for many other users as well
* also clicking on a taskbar group should be possible to filter
* the view that opens by clicking on a taskbar group should follow the same layout strategy used elsewhere and currently being an effect used only there and not accessible form the list can't even be configured
2022-05-05 14:37:52 +00:00
Vlad Zahorodnii
def99b1a7c Update WindowItem's visibility
With this, the WindowItem will know whether it's actually visible. As
the result, if a native wayland window has been minimized, kwin won't
try to schedule a new frame if just a frame callback has been committed.

EffectWindow::enablePainting() and EffectWindow::disablePainting() act
as a stone in the shoe. They have the final say whether the given window
is visible and they are invoked too late in the rendering process.
WindowItem needs to know whether the window is visible in advance,
before compositing starts.

This change replaces EffectWindow::enablePainting() and
EffectWindow::disablePainting() with EffectWindow::refVisible() and
EffectWindow::unrefVisible(). If an effect calls the refVisible()
function, the window will be kept visible regardless of its state. It
should be called when a window is minimized or closed, etc. If an effect
doesn't want to paint a window, it should not call effects->paintWindow().

EffectWindow::refVisible() doesn't replace EffectWindow::refWindow() but
supplements it. refVisible() only ensures that a window will be kept
visible while refWindow() ensures that the window won't be destroyed
until the effect is done with it.
2022-05-05 12:21:26 +00:00
Vlad Zahorodnii
30076f297c effects: Introduce a helper for referencing deleted windows
If an effect is reloaded while it holds deleted references, it's
possible that the closed windows will get stuck in the "zombie" state.

This change introduces EffectWindowDeletedRef helper that can be
used to keep the closed window alive as long as the reference is valid.
2022-05-05 12:21:26 +00:00
Vlad Zahorodnii
00ae7d3893 effects/slide: Use mass-spring-damper model for animation
If you lift fingers but not swipe them enough to switch to another
virtual desktop, the slide effect will play an animation to move from
the current position in the virtual desktop grid to the current desktop.

However, that animation doesn't feel right, there's something missing.
The slide effect uses a TimeLine to animate switching between virtual
desktops, it's great if the amount of sliding is constant.

This change makes the slide effect use the mass-spring-damper model to
simulate the motion of a spring in order to animate switching between
virtual desktops.

The mass-spring-damper equation is integrated using RK4. If the delta
interval is not multiple of the integration step precisely, the
SpringMotion will perform integration as many times as the integration
step fits into the delta. The leftover will be used for LERP between the
previous and the next integration results.

With the spring animation, the slide animation feels more natural when
you lift fingers. If you switch between virtual desktops without using a
gesture, the slide animation should look almost the same as if it were
implemented with the TimeLine.
2022-05-05 11:30:51 +00:00
Vlad Zahorodnii
f51db012f2 effects/desktopgrid: Make sure that the screen is rendered correctly when animation reaches the end
If the animation reaches the end, desktop grid may render the screen
incorrectly. Make sure that PAINT_SCREEN_BACKGROUND_FIRST and flags as
such are set even if animation has reached the end.

Also, while on this, simplify the paintWindow() method by removing
redundant effect status checks.
2022-05-04 08:45:15 +00:00
Vlad Zahorodnii
2da599c670 effects/desktopgrid: Make termination code less error prone
The desktop grid effect can be deactivated in postPaintScreen() without
delaying finish().
2022-05-04 08:45:15 +00:00
l10n daemon script
e9d1def1ba 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-04 01:45:48 +00:00
Marco Martin
02171495be dynamically load effects that support edge activation
effects can specify in their json file "X-KWin-Border-Activate":true
and will be listed in the edge menus.

Don't hardcode desktop grid and overview in the kcms
2022-05-03 16:54:36 +00:00
Vlad Zahorodnii
0c69ce50ac effects/slide: Fix panels losing blurred background when gesture is active
At the moment, if user switches between virtual desktops using a
gesture, panels will loose blurred background because WindowForceBlurRole
is not set.

This change refactors setup code so the slide effect always forces blur
and background contrast when sliding between virtual desktops using a
gesture or animation.
2022-05-03 17:04:29 +03:00
Vlad Zahorodnii
4513b4830f effects/slide: Use an enum to describe current state 2022-05-03 17:04:25 +03:00
Marco Martin
4cb3ab09ed Realtime screen edges gestures for scripted effects
Possibility to implement realtime screenedges gestures in scripted effects,
implement it in the windowsaperture show desktop effect.
* Expose registerRealtimeScreenEdge to JavaScript, the callback will be
a JS function.
* Add the concept of freezeInTime() in the animation js bindings,
it will either create an animation frozen at a given time or freeze a running animation
that can be restored and ran to completition at any time
* add an edges property only for showdesktop as it's not directly on the effect configuration
2022-05-03 13:43:38 +00:00
l10n daemon script
be5cd1b38e 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-03 01:49:38 +00:00
l10n daemon script
6d8a303138 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-01 01:53:58 +00:00
l10n daemon script
143d803f7b 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-04-29 01:43:22 +00:00
l10n daemon script
c8a151d4f1 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-04-27 01:44:50 +00:00
l10n daemon script
beecf8c9d4 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-04-26 01:42:26 +00:00
l10n daemon script
be9781d0c5 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-04-24 01:40:58 +00:00
l10n daemon script
b935bca22f 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-04-23 01:44:53 +00:00
Volker Krause
5368537981 Fix Qt6 build regressions 2022-04-22 18:10:26 +00:00
Fushan Wen
2e7364ddde WindowHeap: Hide window icon and label when excluded
This makes the opening animation of Window View from task manager less rigid.
2022-04-22 16:20:43 +00:00
Fushan Wen
c4a0f20f4a
effects/windowview: Fix "Unable to assign [undefined] to int"
animationDuration is not defined in WindowViewEffect. Use
heap.animationDuration instead.
2022-04-22 21:13:43 +08:00
Vlad Zahorodnii
b64f95b703 Integrate kwaylandserver
This makes KWin switch to in-tree copy of KWaylandServer codebase.

KWaylandServer namespace has been left as is. It will be addressed later
by renaming classes in order to fit in the KWin namespace.
2022-04-22 12:27:33 +03:00
l10n daemon script
ef7d51f09e 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-04-22 01:47:15 +00:00
l10n daemon script
24e2883f24 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-04-21 01:43:47 +00:00
Marco Martin
871f8d0b91 Correctly map NaturalX/Y to scene coordinates
being naturalx something that needs to map to the actual geometry of the window which is in absolute coordinates but mapped to a view which geometry correspond to the one of one particular screen (plus the layout the thumbnail lives in has its own geometry in the scene)
2022-04-20 08:11:18 +00:00
l10n daemon script
5acf8aa792 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-04-18 01:40:14 +00:00
l10n daemon script
e21972fa71 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-04-17 01:48:39 +00:00
l10n daemon script
a518a4d53b 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-04-16 01:46:47 +00:00
Vlad Zahorodnii
ca7927e3b6 Run clang-format yet another time 2022-04-15 15:23:44 +03:00
l10n daemon script
34c1231d60 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-04-15 01:50:12 +00:00
Eric Edlund
003c820e00 rework of slide effect internals
Fixed a bunch of bugs and polished the slide effect.
Plugged the slide effect into the new VirtualDesktopManager interface desktopChanging() to allow for mac os style desktop switching.

BUG: 448419 BUG: 401479
2022-04-15 00:09:52 +00:00
Vlad Zahorodnii
4790408423 Run clang-format again
Some people either don't have clang-format installed or disable the
commit hook.
2022-04-14 13:58:03 +03:00
l10n daemon script
16b7f5729a 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-04-14 01:45:53 +00:00
Marco Martin
5cf2e1e84d Rebase and adapt to changes in master 2022-04-13 19:06:11 +00:00
Vlad Zahorodnii
a0f456b7dc effects: Add Window View effect
The Window View effect is a companion effect for the task manager. It
provides the task manager a way to ask the user to pick a window among
windows identified by window ids passed to the activate() method.

The main motivation for adding this effect is to provide a QtQuick based
alternative for the present windows effect, which is needed to kill the
latter.

This change doesn't extend the overview effect to avoid repeating
mistakes of the past, i.e. adding too many (unrelated) features to the
present windows effect.

While the overview effect provides you a way to select windows, it's not
the only thing that it has. For example, it also allows changing virtual
desktops, etc.

On the other hand, the task manager doesn't need all of that. It only
needs to ask the user to pick a window among the specified windows, nothing
more.

As is, the window view effect is simply WindowHeap with a d-bus api slapped
on top of it.
2022-04-13 19:06:11 +00:00
Vlad Zahorodnii
6dffda920a effectkit: Allow disabling dnd in WindowHeap 2022-04-13 19:06:11 +00:00
Vlad Zahorodnii
2456344fae Allow disabling expo cells
This allows making specific windows in a WindowHeap static.
2022-04-13 19:06:11 +00:00
Vlad Zahorodnii
1589e2c918 effects: Re-introduce support for client filtering in WindowHeap 2022-04-13 19:06:11 +00:00
Vlad Zahorodnii
00c95afcc1 effects: Move WindowHeap in a qml module
The WindowHeap can be useful not only to the Overview effect, but also
other effects, e.g. a desktop grid replacement, etc.
2022-04-13 19:06:11 +00:00
Xaver Hugl
db3f27336f effects/kscreen: don't use xcb on Wayland
BUG: 450564
FIXED-IN: 5.24.5
2022-04-12 18:28:18 +00:00
Vlad Zahorodnii
992753c24a Rename GLRenderTarget to GLFramebuffer
GLRenderTarget doesn't provide a generic abstraction for framebuffer
objects, so let's call GLRenderTarget what it is - a framebuffer.

Renaming the GLRenderTarget class allows us to use the term "render
target" which abstracts fbos or shm images without creating confusion.
2022-04-12 13:41:19 +03:00
l10n daemon script
9dc5e5310e 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-04-12 01:44:17 +00:00
Kishore Gopalakrishnan
1e0b0c881e effects/desktopgrid: only swap windows on current activity
In the desktop grid effect, dragging an empty area of a desktop to
another desktop swaps all windows on the two desktops. This change makes
sure that this matches only windows in the current activity.

BUG: 386769
FIXED-IN: 5.24.5
2022-04-11 20:57:32 +00:00
l10n daemon script
2de51770de 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-04-10 01:47:26 +00:00
l10n daemon script
35c0aca980 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-04-09 01:49:59 +00:00
Marco Martin
170b0e9aa0 effects/overview: Support touchpad realtime activation
Now it follows your fingers when you do a four-finger swipe up to activate it.

CCBUG: 401479
2022-04-08 14:17:21 +00:00
l10n daemon script
6d56fa9820 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-04-08 01:46:46 +00:00
l10n daemon script
1cf3804f60 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-04-07 01:44:22 +00:00
l10n daemon script
1762a59fb4 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-04-06 01:45:45 +00:00
l10n daemon script
9de79c62c7 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-04-05 01:49:22 +00:00
Gustavo Silvera
41526bd8dd effects/showfps: add new options
- added option to remove the frametime graph
- added option to remove the "this is a benchmark" message
- location of the fps counter is now on the "active" monitor by default
- removed the hard-limit of 100 for the FPS counter
- added option to color the text based off the FPS value
2022-04-04 16:05:56 +00:00
David Edmundson
9de9b93325 Add new blend effect
When changing global settings like switching between light and dark
themes the result is currently quite messy. Apps update in a scattered
order and a jarring change.

The solution is heavily inspired from Gnome, we cache the window for X
milliseconds, then perform a crossfade between the cache and current
contents.

It does mean any video is paused for half a second, but pragmatically
it's not really bothersome.

On receipt of an explicit DBus method call we create a cache and start
animating. The explicit method call is needed so that we can guarantee
kwin has a fully copy before a client might change.

Use of an offscreen texture is used so that we include any window
decorations. The DeformEffect effect is repurposed as it has most the
relevnat logic if we remove the live updating.
2022-04-04 13:40:41 +00:00
l10n daemon script
cba443dbe3 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-04-01 02:01:13 +00:00
Xaver Hugl
63c7f523b0 overview: register touchscreen gestures
This was meant to be done in 8914a6c50e,
a mistake must've sneaked in while rebasing
2022-03-30 16:31:10 +00:00
Marco Martin
8e77cc497c Touch friendly changes for the Overview effect
* Makes the close button on thumbnails always visible: besides making it usable on touch, makes it more usable with mouse as well
* add a drag down gesture to close windows, moving opacity to zero while dragigng down to signal the window will be destroyed
* restore behavior animations: animate changes in thumbnails size or positions when not in drag mode or drag gesture to not make jarring sudden changes after closing a window or at end of drag mode
2022-03-30 08:33:30 +00:00
l10n daemon script
1a6ebab865 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-03-29 02:16:07 +00:00
Vlad Zahorodnii
e293972eaa Run clang-tidy with -checks=readability-braces-around-statements fixit
This fixes style issues in old code.
2022-03-28 10:54:11 +00:00
l10n daemon script
e14d31a11a 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-03-28 01:44:20 +00:00
Xaver Hugl
8914a6c50e add global touchscreen gestures
Swipe with three fingers
- left to switch to the previous virtual desktop
- right to switch to the next virtual desktop
- up and down to toggle the overview

CCBUG: 439925
2022-03-27 19:09:04 +02:00
Vlad Zahorodnii
7096e3ead8 Run clang-format
The .clang-format file is based on the one in ECM except the following
style options:

 - AlwaysBreakBeforeMultilineStrings
 - BinPackArguments
 - BinPackParameters
 - ColumnLimit
 - BreakBeforeBraces
 - KeepEmptyLinesAtTheStartOfBlocks
2022-03-25 13:25:15 +02:00
l10n daemon script
149f756ce8 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-03-23 02:09:06 +00:00
Marco Martin
2b6f8a3141 support realtime activation for screen edges gestures
support realtime activation for screenedges gestures, making it possible
for effects to show half-triggered states while dragging from
the edge with a finger, making them much more usable
2022-03-22 20:28:02 +05:30
Vlad Zahorodnii
6ea8463ce6 kwineffects: Rename WindowPrePaintData::clip to opaque
"opaque" is more readable than "clip" and it precisely communicates
what that region actually is.
2022-03-21 09:32:41 +02:00
Vlad Zahorodnii
d4c44220b4 effects/desktopgrid: Make the desktop grid not depend on nested prePaintWindow()
This is needed to allow the Compositor get the surface damage before
calling Scene::paint().
2022-03-21 09:32:41 +02:00
Vlad Zahorodnii
0db64527f0 effects/slide: Make the slide effect not depend on nested prePaintWindow()
This is needed to allow the Compositor get the surface damage before
calling Scene::paint().
2022-03-21 09:32:41 +02:00
l10n daemon script
cdc85e95dc 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-03-20 02:11:23 +00:00
Volker Krause
31d9aa6914 Adapt to tablet event pointer type changes in Qt6 2022-03-19 16:42:23 +00:00
Vlad Zahorodnii
e48357a130 Revert "rework of slide effect internals"
This reverts commit 3c557be707.

This change was merged prematurely.
2022-03-19 18:30:20 +02:00
Vlad Zahorodnii
7e14716043 Revert "Make overview and present windows use realtime gestures"
This reverts commit 6729380c54.

It didn't go through code review process.
2022-03-19 18:29:26 +02:00
Eric Edlund
6729380c54 Make overview and present windows use realtime gestures
They still aren't realtime animated, but by making them respond to the
realtimeGesture() call, they can use callbacks to determine if they should be shown
or not. This allows you to swipe up, have it trigger, then swipe down in the same
motion and get it to untrigger without ever having to release.
2022-03-19 10:21:30 -04:00
Eric Edlund
3c557be707 rework of slide effect internals
Fixed a bunch of bugs and polished the slide effect.
Plugged the slide effect into the new VirtualDesktopManager interface desktopChanging() to allow for mac os style desktop switching.

BUG: 448419 BUG: 401479
2022-03-19 13:19:54 +00:00
Volker Krause
bc7324d258 Remove unused CMake files 2022-03-19 11:24:13 +01:00
Nate Graham
ec75943425 Revert "revert desktopgrid realtime gestures port"
This reverts commit ca7fc44814.

Reverting work with no explanation is unacceptable, especially when
you've already been asked to stop multiple times.

CWG has already been contacted regarding this conduct, which is
starting to seem like vandalism of KDE's codebase. I am CCing sysadmins
and officially recommending an emergency recovation of commit access
for uhhadd@gmail.com to prevent further abusive behavior.

CCMAIL: uhhadd@gmail.com
CCMAIL: sysadmin@kde.org
2022-03-18 13:51:15 -06:00
Jan Blackquill
ca7fc44814 revert desktopgrid realtime gestures port 2022-03-18 14:17:52 -04:00
Nate Graham
2de09fa249 Revert "revert desktopgrid realtime gestures port"
This reverts commit 154528cdef.

This commit was reverted with no explanation, context, or discussion. In
the future, please discuss things like this before doing them. KWin is a
community project, not a personal playground.

CCMAIL: uhhadd@gmail.com
2022-03-18 09:40:10 -06:00
Mathias Tillman
140c2fb20e effects/blur: Fix window flickering when the clip intersected with the current blur region.
This fixes a bug introduced in https://invent.kde.org/plasma/kwin/-/merge_requests/2045 where it would no longer check if it should redraw the whole region unless the data clip intersected. This would lead to flickering in certain cases

BUG: 421135
2022-03-17 22:19:55 +00:00
l10n daemon script
17d562c825 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-03-17 01:47:48 +00:00
Jan Blackquill
154528cdef revert desktopgrid realtime gestures port 2022-03-16 17:14:59 -04:00
Eric Edlund
934f50717e Move 4 finger swipe up to overview effect 2022-03-15 13:29:05 +00:00
Eric Edlund
7a6792aa2f Make desktop grid effect check for active effects before responding to gestures 2022-03-15 13:29:05 +00:00
Eric Edlund
5cf8db26ec Changes to GestureRecognizer and gestures 2022-03-15 13:29:05 +00:00
Volker Krause
a6b5eb3ebb Use non-deprecated QButtonGroup signal 2022-03-14 17:39:53 +00:00
Volker Krause
f6f2c28aa6 Add additional includes needed by Qt6 2022-03-14 16:41:10 +00:00
Volker Krause
9d9e89fb84 Don't rely on implicit QScopedPointer to bool conversion
No longer available in Qt6.
2022-03-14 13:58:55 +00:00
Volker Krause
51250cfb4a Use | rather than + for combining QFlags
The plus operator is no longer available for flags in Qt6.
2022-03-13 10:00:54 +00:00
l10n daemon script
03c80db56d 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-03-13 01:57:28 +00:00
Volker Krause
7188f8fbd1 Port away from deprecated q[s]rand() methods 2022-03-12 12:58:07 +00:00
Volker Krause
c5a712a77a Don't rely on implicit conversion from int to QUuid
Not available in Qt6 anymore.
2022-03-12 10:48:44 +00:00
Volker Krause
f6d14f0401 Adapt to QQuickItem::geometryChanged() rename in Qt6 2022-03-12 09:57:32 +00:00
Volker Krause
0143b63527 Use version-less Qt macros, targets and variables
Prepares for building against Qt6.
2022-03-11 14:37:24 +00:00
Michail Vourlakos
a1fec92ef2 [blur] use blurRegion to identify if a decoration supports blur
Having blurRegion to identify if a decoration supports blur or not instead of the metadata-json way has the following benefits:

- decorations can now provide both blur or not based on user preference
- theme engines such as Aurorae do not have to enforce blur or not to their themes and they can support blur enabled and disabled themes at the same time if they want to
- blurRegion is empty by default so the Korners bug will be fixed for all solid aurorae themes. Breeze and Oxygen have set **blur:false** so nothing changes for them.
- all aurorae themes that do not require blur will free up system resources by default
2022-03-11 13:13:38 +00:00
Nate Graham
44184f4700 effects/overview: add subtle outline around non-active desktops
Otherwise they have no border and look kind of cut off.

BUG: 450739
FIXED-IN: 5.25
2022-03-10 15:14:13 -07:00
Arjen Hiemstra
844c451156 slidingpopups: Support animating show/hide of input method panel
This adds support for animating showing/hiding of the input method panel
to the sliding popup effect, if the input panel is of type "Toplevel".

This is mainly intended to animate showing the virtual keyboard and has
been primarily tested with Maliit. It replaces the client-side animation
that Maliit would do, instead doing the animation on the KWin side which
provides a significantly smoother experience.
2022-03-10 18:41:22 +00:00
Alex Richardson
1980dd0eb8 Use a python script to strip effect metadata
This makes it easier to cross-compile KWin since it is no longer necessary
to have all the KWin dependencies on the host machine. This could be
partially addressed by moving the strip-effects-metadata.cpp into a
separate folder than can be built as a top-level project, thereby reducing
the dependencies to just QtCore. However, it still means we have to build
a native binary. Since all this script is doing is removing some JSON keys,
we could also use a python script and avoid the need to compile a
build-time helper program.
2022-03-09 13:58:41 +00:00
Jan Blackquill
eb933bfe0b effects/desktopgrid: don't forget to schedule repaints when timeline is running
BUG: 444678
FIXED-IN: 5.24.4
2022-03-08 17:21:30 +00:00
Jan Blackquill
5ffc307ca8 effects/desktopgrid: register down gesture
Now you can close the desktop grid with the inverse
of the gesture you used to open it.

BUG: 444694
FIXED-IN: 5.24.4
2022-03-08 14:49:39 +00:00
l10n daemon script
eb760505ac 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-03-04 01:43:35 +00:00
Kai Uwe Broulik
0793c24249 Add KWIN_BUILD_NOTIFICATIONS option
Notifications are really only useful in a setting with a full
shell environment where there is a notification center to display them.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2022-03-03 15:06:36 +01:00
Kai Uwe Broulik
4a14ac51ed effects: Build effect config only with KWIN_BUILD_KCMS
Without effects KCM there is no access to effect configuration either

Signed-off-by: Eike Hein <eike.hein@mbition.io>
2022-02-24 21:29:53 +00:00
Kai Uwe Broulik
5db527a053 effects/mousemark: Port away from KPluralHandlingSpinBox
It's the only user of KTextWidgets in the entire repository.

Signed-off-by: Eike Hein <eike.hein@mbition.io>
2022-02-23 13:48:43 +01:00
Kai Uwe Broulik
8f21921843 effects: Don't call load() from KCM constructor
It is automatically called (and documented as such) by KCModule
after the constructor is run.

This avoids calling a virtual method from the constructor.

Signed-off-by: Eike Hein <eike.hein@mbition.io>
2022-02-23 11:47:32 +00:00
Kai Uwe Broulik
aef8ba8d1a Port KComboBox to QComboBox
None of the features it adds ontop of `QComboBox` are used.

Allows to drop the dependency on KCompletion.

Signed-off-by: Eike Hein <eike.hein@mbition.io>
2022-02-23 11:28:47 +00:00
Kai Uwe Broulik
7e16130eea effects/overview: Don't link against KF5::Completion
None of its classes are used in this effect.

Signed-off-by: Eike Hein <eike.hein@mbition.io>
2022-02-22 15:27:31 +00:00
Kai Uwe Broulik
3aa23093e2 effects: Explicitly link against CoreAddons
Don't rely on another framework to pull it in.
It's where `KPluginFactory` lives.

Signed-off-by: Eike Hein <eike.hein@mbition.io>
2022-02-22 15:27:31 +00:00
Kai Uwe Broulik
2591afc7e7 effects: Remove unused KAboutData includes
Signed-off-by: Eike Hein <eike.hein@mbition.io>
2022-02-22 15:27:31 +00:00
Vlad Zahorodnii
4326d3f029 effects/blur: Avoid shrinking unrelated opaque regions
Currently, the blur effect will shrink an opaque region even if it
doesn't intersect m_currentBlur.

This ensures that the blur effect won't do a stupid thing such as
clipping the opaque region of the desktop window.
2022-02-21 16:02:46 +00:00
Vlad Zahorodnii
ae3dc3f3c6 effects/colorpicker: Pick color in paintScreen()
It's not guaranteed that there will be current render target in
postPaintScreen() as all painting have been completed. paintScreen() is
a much safer place to pick color.
2022-02-21 14:34:49 +00:00
Vlad Zahorodnii
6d20b977ab effects/screenshot: Capture screenshot in paintScreen()
It's not guaranteed that there will be current render target in
postPaintScreen() as all painting have been completed. Furthermore,
even the docs of the postPaintScreen() function indicate that no
painting should be done there, you can do only cleanup things, e.g.
schedule a repaint, etc. paintScreen() is a much safer place to
capture screenshot.
2022-02-21 14:34:49 +00:00
David Edmundson
aab395f07b Check lockscreen status for fullscreen effects
Whilst global shortcuts are blocked by grabbing the keyboard, user set
up manual scripts can still invoke a global action.

Given we already have code to deactivate when locking it makes sense to
also prevent activation.

BUG: 450331
2022-02-17 13:01:57 +00:00
Vlad Zahorodnii
1b4f3960fd effects/contrast: Use QGuiApplication::instance() instead of qApp
qApp is defined differently depending on whether QCoreApplication,
QGuiApplication, or QApplication is included.

Use QGuiApplication::instance() to improve code readability.

CCBUG: 450359
2022-02-17 07:22:25 +00:00
Vlad Zahorodnii
9cca0a6f85 effects/blur: Use QGuiApplication::instance() instead of qApp
qApp is defined differently depending on whether QCoreApplication,
QGuiApplication, or QApplication is included.

Use QGuiApplication::instance() to improve code readability.

CCBUG: 450359
2022-02-17 07:22:25 +00:00
Vlad Zahorodnii
4acae79d54 effects/startupfeedback: Add Qt::Widgets dependency
BUG: 450359
2022-02-17 07:22:25 +00:00
Vlad Zahorodnii
2ff9093604 effects/desktopgrid: Port to QStyleHints
Let's us avoid making the desktop grid effect depend on qtwidgets.

CCBUG: 450359
2022-02-17 07:22:25 +00:00
Vlad Zahorodnii
d6b3b57ba1 effects/zoom: Remove QApplication include
CCBUG: 450359
2022-02-17 07:22:25 +00:00
Vlad Zahorodnii
81d6631733 effects/presentwindows: Remove QApplication include
CCBUG: 450359
2022-02-17 07:22:25 +00:00
Vlad Zahorodnii
7ba68fde8c effects/slidingpopups: Avoid using QApplication
CCBUG: 450359
2022-02-17 07:22:25 +00:00
Vlad Zahorodnii
c2e3496888 effects/contrast: Remove paint area tracking
Unlike the blur effect, neighbor pixels don't affect the results of the
contrast effect so it doesn't have to extend the painted area.
2022-02-16 16:22:02 +00:00
Vlad Zahorodnii
2091cb060f effects/highlightwindow: Fix crash
If a window appears on the screen, the highlight window effect will try
to fast-forward animation to the target state by setting the animation
duration to 0. However, TimeLine doesn't like that because it will
eventually lead to division by zero.

This change makes the highlight window effect fast-forward the
transition to highlight or ghost state by using the complete() function.

BUG: 450323
2022-02-16 15:42:55 +00:00
Vlad Zahorodnii
a3b5266175 Drop Platform::renderLoop()
Having a render loop in the Platform has always been awkward. Another
way to interpret the platform not supporting per screen rendering would
be that all outputs share the same render loop.

On X11, Scene::painted_screen is going to correspond to the primary
screen, we should not rely on this assumption though!
2022-02-15 18:23:52 +02:00
Vlad Zahorodnii
f4f83848b0 kwinglutils: Make GLRenderTarget not store GLTexture reference
This allows us to make the GLRenderTarget a bit nicer when using it to
wrap the default fbo as we don't know what the color attachment texture
is besides its size.

This means that the responsibility of ensuring that the color attachment
outlives the fbo is now up to the caller. However, most of kwin code
has been written that way, so it's not an issue.
2022-02-15 13:30:39 +02:00