Summary: VirtualDesktopManager already had a loading check. We don't need two.
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17724
Summary:
The old readme was targetted at application developers having
conceptional questions about window management. While we all know that
this is very often needed, I doubt that any application developer is
looking at KWin's README to figure out why their window doesn't get
focus.
The new README is focussing more on potential new contributors by
describing what KWin is and how to reach our team. E.g as a nice small
document readable on git project hosting sides.
The information in the readme is mostly taken from
https://community.kde.org/KWin/Mission_Statement
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17722
Summary:
It still mentions dcop, so nobody updated it since the introduction of
dbus which is > 10 years. If nobody updates it and nobody complains that
it mentions dcop it means nobody reads it.
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17712
Summary:
Currently, KWin is not able to detect Radeon GPUs with GCN architecture.
This patch tries to address that.
Reviewers: #kwin, graesslin
Reviewed By: #kwin, graesslin
Subscribers: graesslin, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17715
Summary:
Some effects may release the current context when they tear down, so we
have to make the current context per each unloaded effect.
BUG: 396830
FIXED-IN: 5.15.0
Test Plan: No longer able to reproduce bug 396830.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: davidedmundson, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17716
Summary:
There's nothing relevant in kdeglobals and loading it can lead to noise
when deleting groups that override a system default.
We still cascade which will allow kiosk keys to work as well as relevant
system defaults.
Import/Export is unchanged as that already uses SimpleConfig which
includes this flag.
I don't know if it will fix the relevant issue in the bug or just
reduce noise.
CCBUG: 402139
Test Plan: Compiled.
Reviewers: #kwin, zzag
Reviewed By: #kwin, zzag
Subscribers: zzag, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17645
Summary:
This is a preparation step to move this to ECM (or possibly CMake),
which makes sense now that qtbase is using this too (for Qt6).
Reviewers: #build_system, cgiboudeaux
Reviewed By: cgiboudeaux
Subscribers: cgiboudeaux, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17547
Summary:
A rewrite of the Virtual Desktops KCM using the new DBus
API.
Depends on D13887.
Reviewers: mart, davidedmundson, ltoscano, zzag
Subscribers: davidedmundson, broulik, plasma-devel, kwin
Tags: #kwin
Maniphest Tasks: T4457
Differential Revision: https://phabricator.kde.org/D14542
Summary:
This dbus method is intended to be used by the kwin rules dialog. KWin
can pass the internal id to the rules dialog through a command line
argument (or similar way) and the dialog can query the information
through the dbus call for the provided id. Thus it's possible to
implement one way to query the information which works on both X11 and
Wayland without any windowing system specific functionality.
Test Plan: See new added integration test
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17433
Summary:
This document describes my own practices on how I develop and work on
KWin. Since we have nested KWin/Wayland my ways of developing completely
changed. Especially since it's possible to run without installing. Due
to that I thought it's a good idea to document how one can easily build
and run KWin.
Why a new document in the source tree instead of the wiki?
The main reason for using a wiki was that it allows to format, to link,
etc. This was prior to markdown and prior to code hosting places like
github or phabricator rendering the markdown pages. Given that I think
the information belongs in the repository and not in an external wiki.
Why not fix the existing page?
Our documentation on the wiki is quite outdated:
* Qt 4 based
* only X11
* reviewboard
* information about file structure which does not match reality
Especially the last point is where I think we need to do a clean cut and
just drop such information. Documentation about code belongs in the code
and not detached in wiki. It will outdate.
How to prevent this document will not become outdated?
Of course difficult. But I tried to not describe anything which might
change, such as file layout, etc.
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17600
Summary:
This file has not been tracked for years. Nobody added when new features
were added, when existing code was broken, etc. E.g. none of the changes
since EWMH 1.4 is listed, none of the kde specific extensions is listed.
The document does not contain anything about Wayland protocol support.
I would not trust this document at all to say whether KWin is compliant,
but would check the source code. And after all most of the compliance is
done in KWindowSystem and KWayland, not in KWin.
Also the document lists compliance of other non-KWin elements such as
Qt, kicker (kde 3 thing, not application launcher), etc. This shows it's
also something which doesn't belong in KWin's source tree.
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17601
Summary:
If a parent window is minimized, then its transients have to be
minimized as well, so the minimize behavior is the same on both
X11 and Wayland.
BUG: 401950
FIXED-IN: 5.15.0
Reviewers: #kwin, graesslin
Reviewed By: #kwin, graesslin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17570
Summary:
The idea behind this autotest is to verify that different window
open/close animation effects behave similarly.
Currently, we just check whether Fade/Glide/Scale effect tries to animate
the appearing or the disappearing of toplevels. In the future, the
autotest will be extended to verify that there are no conflicts between
those three effects and the Login/Logout effect, etc.
Test Plan: Ran the test, found a bug in the Fade effect, fixed it.
Reviewers: #kwin, graesslin
Reviewed By: #kwin, graesslin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17526
Summary:
Recently, libkwineffects got some changes that break ABI compatibility,
so we have to bump the API version.
Test Plan:
When using a binary effect, which is made against 226 version, KWin no
longer crashes.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17444
Summary:
qobject_cast has several advantages over dynamic_cast:
* it works without RTTI;
* it's usually faster.
Also, when it comes to casting QObjects, qobject_cast is de facto
standard.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17427
Summary:
We use a function template, so static_cast in getMainWindows looks out
of place. Also, it's not good idea to do static_cast based on output of
isDeleted().
Test Plan: The Dialog Parent effect works.
Reviewers: #kwin, graesslin
Reviewed By: #kwin, graesslin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17426
Summary:
It also searches for the platform plugin, so we need to ensure it finds
it in the build directory.
This was a regression caused by building all platform plugins in the
correct location.
Test Plan: strace on the failing test, verified correct plugin is loaded
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17573
Summary:
Currently, if a virtual desktop was removed, then we'll try to send all
clients to the last virtual desktop even though most of those clients
weren't present on the removed virtual desktop.
Test Plan: Manually.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17576
Summary:
This change removes a small difference between X11 and Wayland clients.
It ensures that all transients are sent to the same desktop as the main
window. A similar check is already in AbstractClient::setDesktop, so in
general it already worked. This is just a special case for
sendClientToDesktop which supports sending to the same desktop so that
all transients are sent to that desktop.
Test Plan: New test case which fails without this change
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17546
Summary:
When launching the touchpad kcm we see the following warning:
Error on d-bus read of "supportedButtons"
And the Gui shows "Error while loading values. See logs for more
information. Please restart this configuration module".
By extending the unit test for reading back the properties through DBus
I noticed that it's not trivially possible to export QFlags to DBus. As
the QFlags can be implicitly casted to int, the property is changed to
an int value.
Test Plan: Test case adjusted, did not pass prior to change, passes now.
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17472
Summary:
This brings KWin a step closer to be run from build dir without having
to install at all. The integration tests are adjusted so that the
virtual platform is still found which makes the code be closer to what
is used in normal kwin_wayland.
Test Plan: ctest passes, manually verified correct plugin is loaded
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17388
Summary:
This command line option is useful for KWin in embedded use case. That
is when KWin is just used as a compositor for one application instead of
a complete desktop environment. In such a setup global shortcuts are not
wanted and interfere with the application. E.g. one does not want Alt+F4
to close the window, that would render the system unusable.
This change introduces a command line option and disables the following
event filters and spies:
* global shortcuts
* modifier only shortcuts
* terminate session
* virtual terminal switching
* screen edges
KGlobalAccel still gets inited, otherwise the (non-functional) binary
would be launched when KWin registers it's global shortcuts.
Test Plan:
New test added based on existing tests for the global
shortcuts, ctest passes
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17304
Summary:
On touch events the mouse cursor gets hidden, on next mouse event the
mouse cursor is shown again. This IMHO significantly improves the system
interaction if touch is the primary user interface.
Test Plan: Test case added and ctest passes
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17280
With 05ca6c97f8 removing all touch points always induces
an at surface change to null. But the decoration leave event
is already sent in the decoration input filter. Do not send
it again in the cleanup function.
This makes the decoration input test pass again.
Reviewed by David Edmundson as part of review of 05ca6c97f8.
Summary:
Certain input devices like touch screens can be in a state of having no input
target at all. In case of touch screens when there are no current touch points.
In this case unset and block at-surface targets until a touch point is
available again.
Test Plan: Auto test window-selection passes again.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: graesslin, davidedmundson, zzag, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17537
Summary:
the newly introduced resize button shouldn't be visible on the phone and
for some reason using a ToolButton prevents the qml to load at all on
the phone (the problem seems right into the C++ part of ToolButton as
is broken on every QQC2 style)
Test Plan: work again on phone, still work on laptop
Reviewers: #plasma, bshah
Reviewed By: #plasma, bshah
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17483
Summary:
Provide the important debug messages which can be used to debug why
virtualkeyboard is not starting.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17454
Summary:
Currently, testDontCrashReinitializeCompositor is unstable because it
doesn't take into account that effects can be loaded asynchronously.
In general, we don't need all default effects in this test, so let's
disable them.
Test Plan: This should fix ASan issues.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17386
Summary:
If updating a shadow means that there should be no shadow, shadow ends
up deleting itself midway through the method.
It's cleaner and safer to leave that to the caller.
This new change matches the existing documentation for
Shadow::updateShadow which states
> In case the Property has been withdrawn the method returns @c false.
> In that case the owner should delete the Shadow.
Test Plan:
Created an ASAN of kwin
Relevant testMaximised no longer fails
Reviewers: #kwin, zzag
Reviewed By: #kwin, zzag
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17380
Summary:
213239a0ea tried to address the case when
a wayland client gets shadow after it was mapped, but because of poor
testing from my side, another bug was introduced. If a decoration tooltip
or the user actions popup is shown, then in some cases it can be blank.
Usually, SurfaceInterface::shadowChanged proceeds SurfaceInterface::sizeChanged,
so when the shadow is installed, window quads cache is rebuilt. But
because shell client already knows the geometry of the internal client,
goemetryShapeChanged is not emitted, thus the cache is not updated.
It would be better just to invalidate the cache when the shadow is
installed, uninstalled, or updated. This reduces the number of
unnecessary invocations of Scene::Window::buildQuads and also moves
handling of the window quads cache away from the Shadow class.
BUG: 399490
FIXED-IN: 5.15.0
Test Plan: Decoration tooltips are no longer blank.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: davidedmundson, graesslin, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17215
Summary:
Currently, --about doesn't have any effect. In addition to that, the about
data contains outdated information.
This change hopefully addresses all previously mentioned issues.
Test Plan: Ran kwin_wayland --author.
Reviewers: #kwin, graesslin
Reviewed By: #kwin, graesslin
Subscribers: graesslin, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17319
Summary:
Use the new functionality in KWayland to support drag and drop via touch
screens.
Either a drag and drop session with pointer or touch is possible, but not
both at the same time. Pointer/touch gets deactivated if a touch/pointer
drag and drop session is active.
Test Plan: Manually.
Reviewers: #kwin, davidedmundson
Subscribers: davidedmundson, alexde, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D15466
Summary:
This patch aims at improving the Toplevel, internal window and decoration
focus tracking.
In detail the goals are:
* Clean tracking of beneath and focus Toplevel as well as decoration and
internal windows. Splitting this up in well defined sub routines.
* Minimal find Toplevel operations on window stack.
* Reduce code duplication in pointer and touch child classes.
* Reuse tracking in drag operations.
* Allow direct usage of Wayland input interfaces for decoration and internal
windows in the future.
* Update touch focus on external events like VD switches correctly.
Test Plan: Manually and existing autotests.
Reviewers: #kwin
Subscribers: kwin, zzag
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D15595
Summary:
Some members were declared protected. Better style is to have them private
with public or protected getters and setters.
This also removes the unnecessary m_input variable.
Test Plan: Builds and runs.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D15519
Summary:
We lost information when using QMouseEvent::globalPos, since
it is integer. Use instead InputRedirection::globalPointer,
which is updated before the filters are processed and is
float.
Test Plan: Manually.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: anthonyfieroni, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D15502
Summary:
Compositing is suspended/finished in a very hard way fashion, effect
windows are destroyed without notifying effects about it.
AnimationEffect tries gracefully release deleted windows, but because
in some cases(like when suspending compositing) a deleted window can
be already destroyed, a segmentation fault can happen.
This change adjusts the order in which effect windows and effects are
destroyed, so AnimationEffect (and other effects) cannot access dangling
pointers.
BUG: 400788
FIXED-IN: 5.15.0
Reviewers: #kwin, graesslin
Reviewed By: #kwin, graesslin
Subscribers: graesslin, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17311
Summary:
When suspending compositing, SceneOpenGLShadow cannot cleanup cached
decoration shadow textures because the effects handler is already gone.
This sometimes can result in a crash when running kwin_x11 --replace
(we're hitting an assert statement).
To fix that, let's use the scene instead of the effects handler for
making the OpenGL context current.
Test Plan:
No longer hit the assert statement:
ASSERT: "m_cache.isEmpty()" in file /home/vlad/Workspace/KDE/src/kde/workspace/kwin/plugins/scenes/opengl/scene_opengl.cpp, line 2025
Application::crashHandler() called with signal 6; recent crashes: 1
QCoreApplication::applicationFilePath: Please instantiate the QApplication object first
KCrash: crashing... crashRecursionCounter = 2
KCrash: Application Name = kwin_x11 path = /home/vlad/Workspace/KDE/usr/bin pid = 5407
KCrash: Arguments: /home/vlad/Workspace/KDE/usr/bin/kwin_x11 --replace
Reviewers: #kwin, graesslin
Reviewed By: #kwin, graesslin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D17306