Commit graph

25446 commits

Author SHA1 Message Date
Vlad Zahorodnii
754b549f01 Restart compositing if kwinrc changes only on X11
On Wayland, options don't influence compositing as on X11. For example,
kwin cannot easily switch between compositing modes, etc.

One can still force kwin_wayland to reinitialize compositing by using
the dbus api.
2023-10-20 22:28:04 +03:00
Vlad Zahorodnii
49b84ddf8c Avoid destroying effects if animation speed changes
It makes little sense to destroy effects if the animation speed changes.
The effects are written with the assumption that the animation time can
change and therefore they handle this case in reconfigure().
2023-10-20 19:15:53 +00:00
Vlad Zahorodnii
f22da5f62a Fix reloading animation speed option
Amends 4d2c9f5d88.

Prior to 4d2c9f5d88, the Compositor used
to force the Options to reload settings when starting compositing.

Unfortunately it was overlooked that Options::animationTimeFactor() can
return an old value when the Options::animationSpeedChanged() signal is
emitted. This change addresses that.
2023-10-20 19:04:30 +00:00
Vlad Zahorodnii
3af30c4250 kcms/screenedges: Fix Overview not being displayed
Scripted and builtin effect metadata formats are no longer compatible.
So KPackageLoader doesn't list builtin effects anymore. To address that,
load builtin effect metadata manually.
2023-10-20 18:54:31 +00:00
l10n daemon script
65db053ba6 GIT_SILENT Sync po/docbooks with svn 2023-10-20 02:14:09 +00:00
l10n daemon script
863a81ba6d SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-10-20 02:07:21 +00:00
Vlad Zahorodnii
509b9e8e3f scripting: Reload SceneEffect configuration when effect is reconfigured
This ensures that the SceneEffect uses new settings when KCM changes
them.
2023-10-19 15:09:47 +00:00
Vlad Zahorodnii
bf602ccd44 kcms/screenedges: Fix listing of effects
Effects have KWin/Effect package type.
2023-10-19 14:55:53 +00:00
Laurent Montel
bc6116c5a7 There's no QVector anymore, QList is the QVector in Qt6 2023-10-19 13:43:53 +00:00
Vlad Zahorodnii
f9163bf6a5 Clear X11 cursor cache when XCB connection changes
We need to clear it because if Xwayland restarts, the future Xwayland
instance may have different cursor ids.
2023-10-19 12:58:58 +00:00
Marco Martin
2eabd17547 Adapt to KSvg api changes
Size/elementSize is a QSizeF now.

Depends on https://invent.kde.org/frameworks/ksvg/-/merge_requests/29.
2023-10-19 11:09:06 +00:00
ivan tkachenko
07dd2a5086
Port implicit default content items to use contentItem: property
See also
https://invent.kde.org/frameworks/kirigami/-/merge_requests/1338
and
https://invent.kde.org/frameworks/kirigami/-/merge_requests/1340
2023-10-19 13:43:41 +03:00
Vlad Zahorodnii
7ae4497d5b Specify scripted effect kcm using X-KDE-ConfigModule
At the moment, if an effect wants to have a configure button in the
desktop effects kcm, it needs to add X-KDE-PluginKeyword field with
its plugin id. This is confusing.

This change ports scripted effects to X-KDE-ConfigModule, which is more
intuitive than X-KDE-PluginKeyword.

kcm_kwin4_genericscriptedconfig is a special config module that loads
config.ui from KPackage. However, an effect can specify a different
config module in the metadata if kcm_kwin4_genericscriptedconfig doesn't
suit their needs.
2023-10-19 07:44:22 +00:00
Vlad Zahorodnii
2c29dfd596 libkwineffects: Make SceneEffect fallback to root context
QuickSceneEffect can also be instantiated by C++, for example that's
the case with the overview effect. In that case, qmlContext() is not
going to return a valid context because the effect has not been created
by a QQmlEngine. In that case, use the root context as the parent
context.
2023-10-19 07:32:38 +00:00
Aki Sakurai
aa57e9130b Fix misgenerated QHoverEvent
https://doc.qt.io/qt-6/qhoverevent.html#oldPos

https://doc.qt.io/qt-6/qhoverevent-obsolete.html#pos

oldPos: On QEvent::HoverEnter events, this position will always be QPoint(-1, -1).

pos: On QEvent::HoverLeave events, this position will always be QPoint(-1, -1).

On the same app, such as Wayland-enabled VS Code, the misgeneration causes the cursor to move to the origin when moving the cursor away from the server side decoration.
2023-10-19 07:17:28 +00:00
Joshua Goins
e398289287 Add QKeySequence to VirtualDesktopManager::addAction overload
There are four usages of this overload, two of them are for the
intentionally disabled "Switch to Next/Previous Desktop" actions and the
rest are for "Switch One Desktop to X" actions. Due to the order they
were added, an empty keybind was set as the default and the actual
keybind is never enabled.

Now there's a QKeySequence argument to this overload, so an unexpected
empty keybind is never added. The two usages of addAction that depend on
this empty keybind behavior now pass in an empty QKeySequence.

BUG: 475748
2023-10-19 06:45:56 +00:00
Vlad Zahorodnii
be88c8ec49 libkwineffects: Drop OffscreenQuickView::repaintNeeded connection in SceneEffect
It's no longer needed since views are not updated in the post paint
stage anymore.
2023-10-19 06:22:48 +00:00
Vlad Zahorodnii
066492ef1d libkwineffects: Make dirty view tracking more robust in SceneEffect
It's possible that a view can request a repaint again in update(). If
that happens, we don't want to overwrite the dirty state after update().
2023-10-19 06:22:48 +00:00
l10n daemon script
b4717ca590 GIT_SILENT Sync po/docbooks with svn 2023-10-19 02:15:59 +00:00
Vlad Zahorodnii
3eb64535d8 examples/quick-effect: Change license of main.qml
Apparently CC0 is not okay with KDE's licensing policies.
2023-10-18 19:39:14 +03:00
Vlad Zahorodnii
3817fc096f libkwineffects: Add QuickSceneView.rootItem property
The root item property can be useful if a QML effect needs to invoke
some function for particular screen delegate.
2023-10-18 16:03:20 +00:00
Vlad Zahorodnii
d7345a77ce libkwineffects: Expose QuickSceneEffect::{viewForScreen,viewAt} to QML 2023-10-18 16:03:20 +00:00
Vlad Zahorodnii
264ebe6377 scripting: Add qml effect bindings
This allows creating third party qtquick scene effects without linking
to libkwineffects and thus rebuilding the effect every kwin release.
2023-10-18 16:03:20 +00:00
Vlad Zahorodnii
793a0e72bf scripting: Add gesture handlers 2023-10-18 16:03:20 +00:00
ivan tkachenko
264b054c5c
kcms/screenedges: Fix buttons overlap on a too narrow vertical screen
BUG: 475579
2023-10-18 18:11:19 +03:00
ivan tkachenko
6c67b73b7d
kcms/screenedges: Slightly refactor monitor size calculation
It doesn't need width when it's going to be scaled with KeepAspectRatio
to some other rectangle anyway, so using constant 1.0 makes it clearer.
2023-10-18 18:11:19 +03:00
ivan tkachenko
c5d692843f
kcms/screenedges: Remove commented out dead code 2023-10-18 18:11:19 +03:00
Dashon Wells
b0d8979178 plugins/overview: Make Window Filtering Optional
This commit makes window filtering optional by providing a checkbox
in Desktop Effects > Overview > Overview Configuration KCM. The
referenced bug report describes a bunch of the reasons why people
wanted this option.

BUG: 460710
FIXED-IN: 6.0
2023-10-18 14:27:56 +00:00
Marco Martin
e67847d43f Use itemChange instead of a connect to windowChanged
with itemChange watching SceneChange is more efficient than connecting
to the windowChanged signal, also this won't arrive during teardown,
aoiding the "destructor already ran" assert.
2023-10-18 14:39:58 +02:00
David Redondo
c0cc162ba6 plugins/windowsystem: Adapt to KWindowEffectsPrivate API change 2023-10-18 11:28:36 +00:00
Aleix Pol Gonzalez
c899cd07f8 xwayland: Do not set scale to 0
It would be the case upon lid close which would make KWin crash. Also
adds an assert so in case it happened again we would be able to catch it
easily. It gets applied asynchronously so it needs to be chased down.
2023-10-18 06:11:27 +00:00
Laurent Montel
2a14a4e398 Use std::as_const here 2023-10-18 06:54:47 +02:00
l10n daemon script
51acd6ce1d GIT_SILENT Sync po/docbooks with svn 2023-10-18 02:17:59 +00:00
Xaver Hugl
d91534303e libkwineffects/glshader: set the correct maximum brightness
The maximum frame average brightness can be significantly lower than the actual
maximum brightness of the screen
2023-10-17 09:32:47 +00:00
Xaver Hugl
2fa80c6a3e libkwineffects/colorspace: rename maxHdrBrightness
The name doesn't really reflect what it's actually about, which is the maximum
average brightness the display can sustain without dimming
2023-10-17 09:32:47 +00:00
Quinten Kock
94b74cff96 plugins/slide: add special case for instant animations
In springmotion.cpp for the slide plugin, there are issues when
animations are disabled, namely a black screen flicker.

The flicker is caused by float under/overflow (div-by-0 -> infinity).

This commit fixes that by special-casing an infinite spring constant,
so that the animation immediately jumps to the anchor.

BUG: 472901
2023-10-16 17:07:11 +00:00
Alexander Lohnau
30600a064b Make X-KDE-Ordering in plugin metadata a proper int value
This makes the intention more clear and avoids unneeded string -> int conversion at runtime
2023-10-16 16:12:43 +00:00
Alexander Lohnau
76d93f7053 Remove empty X-KDE-ParentApp from plugin metadata 2023-10-16 16:12:43 +00:00
Alexander Lohnau
a75bc19ce5 Remove empty website from plugin metadata 2023-10-16 16:12:43 +00:00
Alexander Lohnau
48b11337a9 Remove Version from plugin metadata
The plugins are shipped as part of KWin. Thus having a version separate from the KWin version specified doesn't make sense
2023-10-16 16:12:43 +00:00
Alexander Lohnau
27863b09ae Remove X-Plasma-MainScript from KPackage plugins 2023-10-16 16:12:43 +00:00
Alexander Lohnau
43174a9771 Remove X-Plasma-MainScript from C++ codepaths 2023-10-16 16:12:43 +00:00
Alexander Lohnau
bf713d3892 plugins/kpackage: Remove definition of X-Plasma-MainScript definitions 2023-10-16 16:12:43 +00:00
Nicolas Fella
39fe6cd286 Remove window type from internal window and window system plugin
This is only set from KWindowSystem::setType(), which is unused on Wayland
2023-10-16 14:41:53 +00:00
Vlad Zahorodnii
87d29c60ea plugins/stickykeys: Remove Id field from metadata
The Id field is obsolete in KF6. The filename of the so is used as the
plugin id.
2023-10-16 12:48:54 +00:00
Mike Noe
4de5235402 plugins/private/Windowheap: Fix param injection error
Also, remove import versions
2023-10-16 07:58:19 -04:00
l10n daemon script
3a2136aae4 GIT_SILENT Sync po/docbooks with svn 2023-10-16 02:12:07 +00:00
l10n daemon script
6c9f55190e SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-10-16 02:07:23 +00:00
l10n daemon script
010909bf06 GIT_SILENT Sync po/docbooks with svn 2023-10-15 02:12:53 +00:00
Nicolas Fella
8ee1720047 Adapt to KWindowSystem dropping raiseWindow() 2023-10-14 19:43:58 +02:00