25122 Commits (346d4413a17abbf87302f643a4d3306d92607dde)
 

Author SHA1 Message Date
Vlad Zahorodnii 346d4413a1 Remove boolean trap in Window::setFullScreen()
In most cases, it doesn't matter because a window is made fullscreen by
user. In a few places, the user arg is incorrectly set to false.
1 year ago
l10n daemon script b41834f1aa GIT_SILENT Sync po/docbooks with svn 1 year ago
Xaver Hugl fb7b5ab035 backends/drm: fix underscan property name 1 year ago
Vlad Zahorodnii 75275bbc8f core: Move dmaBufAttributesForBo() to gbmgraphicsbufferallocator.cpp 1 year ago
Vlad Zahorodnii dabf3038f0 core: Drop dmabuf texture creation api in OutputBackend
It never belonged in the OutputBackend, but we also didn't have a better
place when the relevant code had been added.

With the introduction of graphics buffer allocators, it's no longer the
case.
1 year ago
Mike Noe 2c809305b0 plugins/private: Update to ecm qml plugin tooling 1 year ago
Mike Noe 010a8a1e13 scripting: Add localized context to the shared QML engine 1 year ago
Mike Noe 90a71553c3 plugins/private: Remove duplicate import/unneed include 1 year ago
Mike Noe 95cbed08b8 docs: Update docs for effects 1 year ago
Xaver Hugl a800b54a13 backends/drm: fix legacy modesets
There's no pending frame on modesets with legacy, so calling pageFlipped crashes KWin

BUG: 473664
1 year ago
Vlad Zahorodnii 2814030fef Drop {client,window}DemandsAttentionChanged
There are no its users. Also same can be achieved by listening to
Window::demandsAttentionChanged signal.
1 year ago
Vlad Zahorodnii ceac574a68 scripting: Rename Workspace.clientList 1 year ago
Vlad Zahorodnii 52604c5d73 scripting: Rename Workspace.{clientAdded,clientRemoved} signals 1 year ago
Vlad Zahorodnii b39ca36d21 scripting: Rename Workspace.activeClient to activeWindow
Rename activeClient to activeWindow to make the property name more
accurate.
1 year ago
Xaver Hugl 44937136cd backends: record GPU render time
This should make it much less likely for KWin to miss frames
1 year ago
Xaver Hugl 02b996cf9c platformsupport/scenes/opengl: add opengl render query class 1 year ago
Vlad Zahorodnii 417eeaf44b ci: Specify runtime dependencies in .kde-ci.yml 1 year ago
l10n daemon script 28f5da65cb GIT_SILENT Sync po/docbooks with svn 1 year ago
Vladimir Zolotopupov 361e2c3eba wayland: Fix high-resolution scroll wheel discrete step calculation
Some wheels might send fewer or more than 120 fractions per step.
In order to always register a discrete step, we count these as a step
already at half(120/2) of one mouse wheel step in stepping mode.
The timer resets the initial value of the step because the mouse
can switch between free spin and stepping mode.
When transitioning from free spin to stepping mode,
the mouse calibrates its wheel position to the starting point
and generates some fractions.
As a result, our starting position can appear far from the zero point,
potentially causing us to count two(or zero) steps instead of one.
Additionally, the compositor might start when the mouse is in
free spin mode(or the mouse could be connected in free spin mode),
leading to the same issue.
https://gitlab.freedesktop.org/libinput/libinput/-/issues/814
1 year ago
Vladimir Zolotopupov 792ff84419 wayland: Refactor the high-resolution scroll wheel step accumulator 1 year ago
Xaver Hugl 0ab928c9ac backends/libinput: enable tap to click and tap-and-drag by default 1 year ago
Vlad Zahorodnii 2f6f1d9822 wayland: Keep popups on their parents' desktops
At the moment, popups are assigned to the current desktop and activity.
However, a toplevel can be on several virtual desktops. If user switches
between virtual desktops and the active window does not change, it can
result in not being able to dismiss or open new popups depending on the
toolkit implementation details.

To prevent that, keep popups on same virtual desktops as their parents.

BUG: 398628
1 year ago
Marco Martin 54b3c2c6b6 port screenedge effect to KSvg
Part of https://invent.kde.org/frameworks/ksvg/-/issues/1.

Port the linked usage of Plasma::Svg to KSvg::Svg, still
syncing with the Plasma style.
1 year ago
Vlad Zahorodnii bb18d9fbac wayland: Don't round source geometry size
.toSize() exists from the times when surfaceSize used to be a QSize. It
shouldn't matter in practice though.
1 year ago
Kai Uwe Broulik 23059285cf kcms/screenedges: Port to KSvg
Removes the dependency on Plasma Framework from the KCMs.

This won't use the current Plasma theme but always the default one.
However, the monitor graphic hasn't really been used anywhere else
anymore (it used to be in e.g. the wallpaper settings in Plasma 4),
so I think this is alright.
1 year ago
Vlad Zahorodnii adf8ed8f34 scene: Port qpainter rendering away from surface-to-buffer matrix
This fixes rendering of surfaces with transformed buffers in qpainter
renderer.
1 year ago
Vlad Zahorodnii 54e2a5761c wayland: Use correct bounds size when computing the source box
The buffer transform specifies a transform from the buffer coordinate
space to the surface coordinate space.

The inverse buffer transform specifies a transform from the surface
coordinate space to the buffer coordinate space.

OutputTransform::map(QRect, QSizeF) expects both arguments to be in the
same coordinate space.

In case of SurfaceInterfacePrivate::computeSourceBox(), both should be
scaled surface coordinates so bufferTransform.inverted() maps the source
rect to the proper buffer coordinate space.
1 year ago
Xaver Hugl 7582d72eac backends/drm: cache the canonical file path of the device 1 year ago
Kai Uwe Broulik 410ca44e6e XdgPopupWindow: Reposition for non-reactive positioners
Ensures that e.g. context menus move about with their parents when they
get moved around.

However, as per spec don't re-constrain the window when its positioner
is non-reactive. This change calculates the offset from its parent window
once initially and places the window relative to that whenever the parent
moves.

Only when the positioner is reactive, will it recalculate the placement fully.

BUG: 461994
1 year ago
Kai Uwe Broulik 74b68a63b5 Drop bounds argument from transientPlacement
XdgPopupWindow disregards it for the most part anyway and asks workspace
for the placement area directly. Also gives XdgPopupWindow more control
on the placement when it's all contained inside of it for the upcoming commit.
1 year ago
Xaver Hugl adae140d57 backends/drm: delete egl layers before the egl backend
And ensure a context is current when deleting them
1 year ago
Xaver Hugl 5340d729aa backends/drm: move layers out of the pipeline state
They're not actually supposed to be ever reverted, so having them in the
state is just unnecessary overhead
1 year ago
David Edmundson f7fb9476b3 xwl: Handle X11 clipboard owners closing more thoroughly
Selection acts as an abstraction around multiple X11Sources, when we get
a new source we asyncronously emit that x11OffersChanged when it
completes.

If the selection is lost, we were just deleting the source, without
notifying other parts.

XwlDataSource is the datasource that SeatInterface knows about. We need
to delete this when the X11 connection is no longer valid. SeatInterface
will update the selection when the XwmlDataSource is deleted if it's the
active selection.

The hook is introduced as updating the selection in Clipboard will cause
Selection to delete m_xSource which gets messy.

BUG: 449909
1 year ago
Xaver Hugl 261121547d backends/drm: check explicit gpu paths for symlinks
Otherwise we don't process hotplugs when we should
1 year ago
Ismael Asensio 9add143a40 kcms/decoration: Fix highlight when hovering the preview
The preview item implements hover event filters, which by default
are accepted and not propagated to their parent, breaking the
hightlight on hover for the GridView.

We can simply "ignore()" those events so they are propagated,
but still fully functional.

Preemptively, do the same also for mouse events, which seem to be
already propagated now, but shouldn't according to the QQuickItem
documentation.

CCBUG: 473011
1 year ago
David Redondo 00f1382f27 wayland: Use correct window resource when sending parent_window
While not common a client can have bound the global multiple times
and create window objects through all of them. In this case the event
send to the client would carry the wrong object since only the clients
of the two resources were checked for equality.
We can save the resource of the window managment the window
belongs to by extending the resource and storing it there.
Sending the initialState has been moved out of resource_bind since
it happens directly after allocate() and there being no opportunity
to set the custom wmResource field in between.
1 year ago
Xaver Hugl 56aab75a57 plugins/qpa: handle modifiers more correctly
Instead of hardcoding ARGB8888 and using implicit modifiers, look through
the list of available formats and modifiers and pick a match that egl will
actually accept.
1 year ago
Vlad Zahorodnii 36960d8572 plugins/blur: Rewrite it
Given how the blur effect works, if a pixel changes, the surrounding
pixels may have to be repainted as well. Currently, it's achieved by
expanding the damage in the BlurEffect::prePaintWindow() function.
However, it means that the blur effect should see both surface and
buffer damage in the pre paint pass.

Unfortunately, after refactoring surface and buffer damage tracking,
kwin no longer provides the buffer damage in the pre paint pass (it does
so for good reasons). This broke the blur effect. As an example, you may
see visual glitches when moving the software cursor over blurred areas
of a window.

In order to fix this issue, the blur effect has to cache background
behind every window to avoid blurring already blurred areas.

This change implements a background cache. Unfortunately, since the
blur effect's code has become very difficult to change over the years,
this change rewrites the relevant parts of the blur effect.

With the proposed design, the blur effect is going to maintain cached
background for every window + offscreen render targets. It may have
issues with animated windows, however in practice, it seems to behave
good enough. However, if it becomes pressing matter, we can move from
simplistic design in this patch to somewhat more sophisticated design
that involves textures with rounded up size.

BUG: 455526
1 year ago
Vlad Zahorodnii 1b6736e01d plugins/blur: Remove dead code 1 year ago
Vlad Zahorodnii 09fb54dcb6 plugins/blur: Enable strict blurring for all windows
At the moment, the blur effect operates in two modes:

- generic where the blur effect samples from pixels outside the window
- and a more strict version where the blur effect only blurs what's
  behind the window

The latter mode is preferred for panels and its popup. However, it also
makes sense to enable this mode for normal windows too. This simplifies
the blur effect a bit.
1 year ago
Vlad Zahorodnii 47d2126034 plugins/blur: Tidy the header 1 year ago
Vlad Zahorodnii 52031f095d plugins/blur: Move blur window data in a struct
It's going to be useful later to cache the background texture.
1 year ago
l10n daemon script 5d65b43294 GIT_SILENT Sync po/docbooks with svn 1 year ago
l10n daemon script 2f83e41967 GIT_SILENT Sync po/docbooks with svn 1 year ago
Kai Uwe Broulik 8c01959c82 Use PlainText for various Labels
Otherwise if a virtual desktop or window contains something that looks
like an HTML tag, it will try to render it and blow up the layout.
1 year ago
l10n daemon script 8d7e5c726e GIT_SILENT Sync po/docbooks with svn 1 year ago
l10n daemon script 56ff7fd240 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"
1 year ago
l10n daemon script aae482348b GIT_SILENT Sync po/docbooks with svn 1 year ago
l10n daemon script b9307e8dc2 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"
1 year ago
l10n daemon script 13f3805f28 GIT_SILENT Sync po/docbooks with svn 1 year ago