19165 Commits (2894913f9362a8b5bb826532de032132711e4a9c)
 

Author SHA1 Message Date
Aleix Pol 2894913f93 lockscreen: also activate lock screen windows
We are running a slightly different code path, make sure that we still
honour conventions like screen focus.

BUG: 427882
4 years ago
Vlad Zahorodnii 62432133e0 const'ify Platform::findOutput() 4 years ago
Vlad Zahorodnii e88033f914 wayland: Fix blank window thumbnails
With the introduction of stripped down window items, the WindowPixmap
objects no longer form a hierarchy. WindowPixmap::children() method was
removed.

Surprisingly, the removal of the children() method didn't result in a
compilation error because the QObject class has a method with the same
name.

Currently, a window pixmap will have no QObject children even if the
associated wayland surface has child sub-surfaces. This may result in
blank thumbnails of apps that use sub-surfaces, e.g. Firefox. In order
to fix that issue, we need to check if there are child items instead.
4 years ago
Vlad Zahorodnii 24d865ea38 wayland: Generate valid output uuids
Currently, kwin generates invalid output uuids.
4 years ago
Aleix Pol d419729331 debug_console: Improve rendering of non-x11 clients
We'd always get "0x0: something" where the 0x0 is the xcb_window which
obviously doesn't translate.

Instead show the class name so we can easily track what kind of object
we are dealing with.
It's an easy way to show which shell it's using on Wayland, will be
useful in other cases as well.
4 years ago
Alexander Lohnau d90a9d2dd9 GIT_SILENT Add auto generated files to .gitignore 4 years ago
David Redondo 1419993b89 Add a DBus interface to the presentWindows effect
The same as for the highlightWindows effect. Toggling it through
DBus is platform independent.
4 years ago
David Redondo 26bf4f51d0 Add a DBus interface to the highlightWindows effect
The Taskmanager can now activate it this way, instead of using X
atoms. This means it will also work on Wayland.
4 years ago
Vlad Zahorodnii ab58171ed8 wayland: Check workspace position after creating decoration
If a decoration is created for an already mapped maximized window, check
the workspace position to ensure that the window still fits the maximize
area.

BUG: 432326
4 years ago
Vlad Zahorodnii d1c5970273 Fix build 4 years ago
Vlad Zahorodnii da5fc3d9e9 wayland: Wire in subpixel information
kwaylandserver has all the code to send subpixel information but kwin
doesn't really use it.
4 years ago
Vlad Zahorodnii 9d9747490e wayland: Send missing output-device properties
Currently, we don't set eisa id and the serial number.
4 years ago
Vlad Zahorodnii 5619a2939a wayland: Send only current wl_output mode 4 years ago
Vlad Zahorodnii 707c724d61 wayland: Adjust kwin to OutputInterface changes
The new OutputInterface class has not create() method and it also works
around the wl_global race condition.
4 years ago
Vlad Zahorodnii c27230719c wayland: Move Wayland-specific code out of AbstractWaylandOutput
Currently, output properties are looked up either on the wl_output
object or the output device object. This puts a hard dependency on the
wayland server in the platforms.

This change intends to fix some flaws in the current output
abstractions, and allow creating/destroying wayland-specific globals as
we wish.

With the work done in this patch, the need for the AbstractWaylandOutput
class is unclear, and it might be a good idea to merge it with the base
AbstractOutput class.
4 years ago
Vlad Zahorodnii 3d231b3cb5 Remove documentation for already documented methods in AbstractOutput
The documentation in AbstractWaylandOutput is the same as the one in the
AbstractOutput class.
4 years ago
Xaver Hugl 50f03ac6dc platforms/drm: improve buffer handling with GbmBuffer 4 years ago
Vlad Zahorodnii dbdc30da7b wayland: Return a type of NET::Unknown for popups
This is to ensure that isNormalWindow() returns false for popups. One
could argue that we abuse netwm window types, on the other hand, we
don't know the exact type of popups and NET::Unknown is the closest type.
4 years ago
Nate Graham dd3f85d19a Improve text for "keep above"/"keep below" buttons
It may not be totally clear what exactly they're being kept above.

CCBUG: 435292
4 years ago
Vlad Zahorodnii 913d242bd9 platforms/drm: Fix crash in EglGbmBackend::presentOnOutput()
If the damage history is empty and EGL_KHR_partial_update is supported,
kwin may crash.
4 years ago
Andrey Butirsky 91f47c9092 fix global shortcuts for non-Latin symbols
Re-use Qt's implementation of handling non-Latin layouts here
For full ASCII range support (Alt+`, etc.) Qt needs to be patched still,
see QTBUG-90611

BUG: 375518
4 years ago
Jan Blackquill bc3ac17141 GlobalShortcuts: clang-format 4 years ago
Jan Blackquill ccca3b2af2 GlobalShortcuts: refactor
I consider this a prerequisite commit to improving the quality of touchpad gestures provided by KWin.
In short, this breaks apart a weird all-in-one class into an std::variant for the different types
of shortcuts in order to make it easier to add new types of global shortcuts. For the byte shavers, this
roughly halves the size of the GlobalShortcut class as well. On top of all this, the code is about half
the size it was before, mostly due to newer C++ concepts being used that allow us to let the compiler
do more work for us.
4 years ago
Jan Blackquill 9f215a06fa Fix crash on hotplugging displays while switched to another TTY
Currently, we inhibit renderloops when switching to another TTY, and unhibit
when switching back. When we hotplug a display while switched to another TTY,
its renderloop isn't inhibited by default, yet when we switch back, we try
to uninhibit the fresh renderloop, which triggers an assert.

Inhibiting newly created outputs while switched to another TTY fixes this crash.

BUG: 435388
FIXED-IN: 5.21
4 years ago
David Edmundson c53b2fa3c5 Fix crash in Unmanaged without compositing
Without compositing we don't have surfaceItems

BUG: 435322
4 years ago
Xaver Hugl 8bbd186f8e platform/drm: add dpmsFinishOn to atomicEnable
Without it the output will stay blank after enabling
4 years ago
Xaver Hugl b2653c45c8 platforms/drm: drop connector name from modelName with serial
The connector name is not relevant to applications or
users - expectation is that the same physical monitor always gets the
same name, regardless of how it's connected. If no serial is available,
fall back to the old scheme to prevent multiple connected outputs from
having the same name.
4 years ago
Alexander Lohnau 002c4612e3 kwinscripts kcm: Only delete entries once changes are applied
This makes it consistent with other QML KCMs
4 years ago
Vlad Zahorodnii d1b537b587 Move insertion of safety points to X11Compositor
Safety points only work on X11. On Wayland, we gain nothing from them.
4 years ago
Nicolas Fella dcdca9be6a Remove unused include 4 years ago
Vlad Zahorodnii 9168ced30f wayland: Make KWinDisplay less chatty
There is no point for printing a warning if kwin cannot read the exe
symlink in /proc. It may happen for processes such as polkit agent.
4 years ago
Vlad Zahorodnii 7054f6b2d6 platforms/drm: Drop stream operator for DrmOutput
There is already one that works for all AbstractOutput classes and
properly restores the state of QDebug.
4 years ago
Vlad Zahorodnii dd9a1e5320 platforms/drm: Rename DrmCrtc::resIndex()
The value that the DrmCrtc::resIndex() function returns is better known
as "pipe index." This change renames the method to match the terminology
used by kernel developers and other compositor developers.
4 years ago
Vlad Zahorodnii 53796aacb2 platforms/drm: Remove unused parameter in DrmCrtc constructor 4 years ago
Vlad Zahorodnii d883cccfd3 platforms/drm: Minor coding style fixes
This reformats some code according to the KF coding style.
4 years ago
Vlad Zahorodnii 7926fce598 platforms/drm: Make DrmObject::m_id private
There's already a getter for the object id.
4 years ago
Vlad Zahorodnii 2ea66eb4c3 platforms/drm: Remove unused field in DrmObject 4 years ago
Vlad Zahorodnii f534b64e5c platforms/drm: Associate drm objects with their gpus
This makes the code more consistent. At the moment, we initialize drm
objects either with the corresponding gpu object or with its fd.
4 years ago
Vlad Zahorodnii 75e7562953 platforms/drm: Fix handling of missing EDID
drmModeGetPropertyBlob() may return null and we should handle that. In
addition to that, m_conn is not initialized in DrmConnector so kwin will
crash whenever the connector info is accessed.
4 years ago
Vlad Zahorodnii 53f7bda7d2 platforms/drm: Make DRM backend less chatty
These warnings can be safely ignored, their priority can be lowered.
4 years ago
Xaver Hugl 2efb9c473d Move Edid and DPMS into DrmConnector 4 years ago
Vlad Zahorodnii 326d211691 platform: Use damage tracked by SurfaceItem
There is no need for both kwin and kwaylandserver track damage.
4 years ago
Vlad Zahorodnii 2ade92d69b platform: Make OpenGLBackend::scanout take SurfaceItem
This allows removing SurfaceInterface::trackedDamage().
4 years ago
Vlad Zahorodnii 36b55261da Drop AbstractClient::addRepaintDuringGeometryUpdates()
It's not needed since the scene keeps track of repaints.
4 years ago
Vlad Zahorodnii 98b0b13f98 libkwineffects: Drop windowPaddingChanged signal
It makes no sense on Wayland.
4 years ago
Vlad Zahorodnii a9d5b84596 scene: Refactor damage teardown in X11SurfaceItem
This introduces the markedAsZombie signal, which is emitted when the
window is about to become deleted. The X11SurfaceItem uses this signal
to determine when the damage must be destroyed.
4 years ago
Vlad Zahorodnii 47113e09b8 scene: Introduce window items
Currently, dealing with sub-surfaces is very difficult due to the scene
design being heavily influenced by X11 requirements.

The goal of this change is to re-work scene abstractions to make improving
the wayland support easier.

The Item class is based on the QQuickItem class. My hope is that one day
we will be able to transition to QtQuick for painting scene, but in
meanwhile it makes more sense to have a minimalistic internal item class.

The WindowItem class represents a window. The SurfaceItem class represents
the contents of either an X11, or a Wayland, or an internal surface. The
DecorationItem and the ShadowItem class represent the server-side deco and
drop-shadow, respectively.

At the moment, the SurfaceItem is bound to the scene window, but the long
term plan is to break that connection so we could re-use the SurfaceItem
for things such as software cursors and drag-and-drop additional icons.

One of the responsibilities of the Item is to schedule repaints as needed.
Ideally, there shouldn't be any addRepaint() calls in the core code. The
Item class schedules repaints on geometry updates. In the future, it also
has to request an update if its opacity or visibility changes.
4 years ago
Vlad Zahorodnii b61c800cee libkwineffects: Introduce windowExpandedGeometryChanged()
This signal can be useful if you want to know when the visible geometry
has changed to update cached repaint region during an animation.
4 years ago
Vlad Zahorodnii c6d2eee3c1 Introduce signals to notify about Shadow changes
These signal can be useful if you need to know when the shadow must be
repainted or its geometry has changed.
4 years ago
Vlad Zahorodnii 0f1afdbdc0 scene: Pass dirty region to SceneOpenGLTexture::updateTexture 4 years ago