22460 Commits (cf8f189be20b600b59e273216c568c07a0bd2501)
 

Author SHA1 Message Date
Alex Richardson cf8f189be2 Allow usage of lcms2 when compiling with Clang
Otherwise the build fails for me with the following error:
error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
Upstream does not appear willing to fix this issue, so we have to add a
define to avoid usage of this useless keyword.
See https://github.com/mm2/Little-CMS/issues/190 and
https://github.com/mm2/Little-CMS/issues/243.
2 years ago
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
2 years ago
Vlad Zahorodnii d7ec51998b backends/drm: Import gbm bos using dmabuf
It appears that importing gbm_bo's using eglCreateImageKHR() doesn't
work on nvidia.

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

In order to address those issues, this change refactors how gbm_bo
objects are imported and how gbm_bo's are allocated for dmabuf textures,
so the same code can be reused in EglGbmBackend::textureForOutput()
and Platform::createDmaBufTexture().
2 years ago
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
2 years ago
Xaver Hugl 5d37a59198 effects/overview: fix scale of windows when dragging them upwards 2 years ago
Arjen Hiemstra 79dfb1ff61 input: Move MoveResize input filter after global shortcut input filter
This allows using global shortcuts while a move/resize is ongoing. Most
importantly, this allows moving a window to a different desktop by
picking it up and then using a global shortcut to move to a different
desktop.

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

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

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

BUG: 453632
2 years ago
Xaver Hugl 78794b4239 backends/drm: disable cursor layer when setCursor fails
Otherwise the next commit will still try to enable the cursor layer, and
possibly fail because of it
2 years ago
Nicolas Fella a902e78ff4 Mark libxcvt as required
It's used unconditionally later on

Make sure it fails at the appropriate time when not found
2 years ago
Xaver Hugl 0b27ce4d34 Make touchscreen gestures realtime 2 years ago
Aleix Pol 946087ef37 Inhibit edges when the active window is full screen by default
At the moment we trigger the edges even when the active window is full
screen which is unfortunate when running certain games, for example when
you're attacking the village at the north-east in Age of Empires and you
have the Overview effect on.

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

BUG: 441464
2 years ago
David Redondo ed45af55bd Install tabbox kcm only once 2 years ago
Vlad Zahorodnii ea1fadfe8d Remove Window::addRepaint() and Window::addLayerRepaint()
Conceptually, scheduling repainting in Window doesn't belong there. This
change rewires EffectWindow internals so it schedules repaints using the
associated WindowItem.

Window::addWorkspaceRepaint() has not been removed yet because
Window::elevate() uses it.
2 years ago
Vlad Zahorodnii 8cc5e04238 scenes/opengl: Rename RenderContext::transforms to RenderContext::transformStack
It's a better name and it's consistent with opacityStack.
2 years ago
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.
2 years ago
Alexander Lohnau 99f01ee9c5 Fix malformed X-KDE-OnlyShowOnQtPlatforms value in keyboard KCM metadata 2 years ago
Alexander Lohnau cdab439bd0 Add missing installation of virtualkeyboard KCM 2 years ago
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"
2 years ago
Xaver Hugl d83121dbe4 backends/drm: also use modifiers by default for virtual outputs 2 years ago
Xaver Hugl f02a6fd128 backends/drm: add fallback for missing gbm modifier support
It can happen that a gbm implementation does not support modifiers, while
the drm driver does. To prevent that from breaking KWin, fall back to creating
a gbm surface without modifiers when creating one with modifiers fails.

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

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

GIT_SILENT
2 years ago
Xaver Hugl 94b0ca8146 tabbox: don't dismiss popups
The glitches that dismissing popups was supposed to prevent are apparently
no longer present.

BUG: 446318
2 years ago
Vlad Zahorodnii 313baa4b51 Remove QAction include in AnimationEffect
It builds fine without QAction include.

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

This change makes the DeformEffect disable geometry clipping if the given
paint region is infinite region in order to avoid hitting integer
overflow.
2 years ago
Xaver Hugl f07d6bd400 backends/drm: port the cursor to use output layers
CCBUG: 447797
2 years ago
Xaver Hugl 12515b4656 backends/drm: fix qpainter 2 years ago
Méven Car 1dd12a064a Fix a couple unused warnings
GIT_SILENT
NO_CHANGELOG
2 years ago
l10n daemon script e1cec89ddb SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2 years ago
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>
2 years ago
David Redondo f6bb95f18e Bump plasmashell version to 7 2 years ago
Xaver Hugl e4695325a6 backends/drm: store gbm buffer for screen recording 2 years ago
Nicolas Fella 774dbf8d2f Use ECMFindQmlModule instead of ECMQmlModules 2 years ago
Vlad Zahorodnii 1d699a703d autotests: presentwindows -> windowview 2 years ago
Vlad Zahorodnii 0860efecc3 Move SceneWindow::decorationShape() to DecorationItem 2 years ago