24625 Commits (d2aee0a1a28cb3d3cfeb11d177c24eaaaa3c15d5)
 

Author SHA1 Message Date
Nicolas Fella 008bdd18e4 Remove wrong prefixes from includes 2 years ago
l10n daemon script d91426c170 GIT_SILENT Sync po/docbooks with svn 2 years ago
Alexander Lohnau 8fc8bf89b5 Remove unneeded KCMUtils prefix for KCModule include
This was a temporary fix that is no longer needed
2 years ago
Vlad Zahorodnii 70a5052587 Remove commented out code 2 years ago
Vlad Zahorodnii d45d8b5f98 Simplify X11Window::removeTransient()
If a transient parent is removed, X11Window::removeTransient() will try
to upgrade the transient to a group transient.

On the other hand, that code is broken because Window::removeTransient()
will unset transientFor() so we never hit the code path in the if
statement.

While we could fix it, I think it's not worth it because transient
handling code is already mental and making group transients and normal
transients disjoint will help to keep the things simpler.
2 years ago
Aleix Pol fb3018b711 dpms: Make sure we are not calling the interface after the output is gone
It seems it's possible at times, as described in the bug.

BUG: 466346
2 years ago
Vlad Zahorodnii 71956e1bb5 effects/mouseclick: Fix warning about unhandled QPointingDevice::PointerType enum
AllPointerTypes is used as a filter in pointing input device handlers in
QML. I don't think we should hit this case in real world.
2 years ago
Vlad Zahorodnii a1703ab97e Remove kwincompositingdata.moc include 2 years ago
Vlad Zahorodnii 9e4ed75e8e Remove kwinoffscreenquickview.moc include
It's not needed anymore.
2 years ago
Vlad Zahorodnii f20cf30693 Fix populating CMAKE_AUTOMOC_MACRO_NAMES with kwineffects macros
Apparently CMAKE_AUTOMOC_MACRO_NAMES modifications are not visible in
sibling directories. To work around that, populate
CMAKE_AUTOMOC_MACRO_NAMES with libkwineffects plugin macros in the
top level CMakeLists.txt file.
2 years ago
Vlad Zahorodnii 4b343698c3 scripting: Drop registerWindow() workaround
desktopchangeosd appears to stop updating because kwin fails to deselect
XShape events.
2 years ago
Vlad Zahorodnii 983a0bc599 Prefer QThreadPool over QtConcurrent where we don't care about result
QtConcurrent::run()'s return type is marked with [[nodiscard]], which is
not nice to code that just needs to move some tasks to a worker thread.

On the other hand, QThreadPool satisfies our needs too and Qt doesn't
need to construct futures that we won't use.

One remark about the screenshot plugin: the task lambda is mutable so it
cannot be represented using a std::function.
2 years ago
l10n daemon script a2ef5cb1a7 GIT_SILENT Sync po/docbooks with svn 2 years ago
l10n daemon script 26c9a5534e GIT_SILENT Sync po/docbooks with svn 2 years ago
Vlad Zahorodnii a9ad59b32a Improve Workspace::outputAt()
Workspace::outputAt() casts vectors to four rectangle corners and uses
the shortest one to decide which output is the closest to the given
point.

This works poorly on dual monitor setups where on the left side you have
a monitor with landscape orientation and one with portrait orientation
on the right hand side. In that case, outputAt() will prefer the left
monitor even though the right monitor is the closest one if you cast a
perpendicular from the given point to the right monitor.

In order to improve the handling of that case, this change makes
Workspace::outputAt() compute the closest point to the output geometry
rectangle and use the squared distance as the score.
2 years ago
Vlad Zahorodnii cbd50a1e08 libkwineffects: Install headers in libkwineffects/
This improves the scoping of libkwineffects header files and it helps to
make `#include "libkwineffects/foobar.h"` code work in user code.
2 years ago
Vlad Zahorodnii 1211d8e3d6 Prefix more kwineffects includes with libkwineffects/ 2 years ago
Vlad Zahorodnii c049d5afb1 tabbox: Provide raw window caption
Use "textFormat: Text.PlainText" in window switchers instead.
2 years ago
Vlad Zahorodnii c5eabfa4d1 tabbox: Drop TabBoxClient
The indirection contributes unnecessary complexity. The usage of
std::weak_ptr and std::shared_ptr complicates the things further, e.g.

![Screenshot_20230325_170226](/uploads/d8b68a9eff47c93c4463bb230b5bbe49/Screenshot_20230325_170226.png)

---

Ideally, same should be done with TabBox and TabBoxHandler, but that can be done in another MR.
2 years ago
Vlad Zahorodnii fc890340d9 Fix warning about duplicate names in debug_console.ui
"label" is already used.

    Warning: The name 'label' (QLabel) is already in use, defaulting to 'label1'.
    Warning: The name 'label' (QLabel) is already in use, defaulting to 'label2'.
2 years ago
Xaver Hugl 67dc0c5c48 backends/drm: restrict common mode generation to drivers that support scaling
Also set the scaling mode property to "full aspect", which should reduce
the number of cases where the feature can cause issues
2 years ago
Vlad Zahorodnii cf1d66ef59 tabbox: Drop support for _KDE_FIRST_IN_WINDOWLIST
LXR search shows that _KDE_FIRST_IN_WINDOWLIST is not used anywhere in
KDE codebase besides KWin.
2 years ago
Vlad Zahorodnii 09cc312f31 Drop irrelevant Deleted cleanup in Workspace
Deleted windows are no longer destroyed using deleteLater(). They will
be destroyed immediately as Workspace goes through the window list
because the effects will be unloaded by that time.
2 years ago
l10n daemon script 9c22df0769 GIT_SILENT Sync po/docbooks with svn 2 years ago
Vlad Zahorodnii 1f43605329 Drop Workspace::clientList() 2 years ago
Vlad Zahorodnii 4a1e7df599 tabbox: Drop desktop switching
Tabbox supports two operation modes: switching between windows and
desktops. Switching between windows is more commonly used. Desktop
switching is not exposed in user settings and it requires some advanced
knowledge of kwin's internals to enable it.

On the other hand, over the past years, we've double downed on effects
like desktop grid and overview to provide graphical means to switch
between virtual desktops.

This change drops desktop switching because it's effectively unused to
simplify the tabbox code, which can be very handy for the future
refactorings of window switching.
2 years ago
Ismael Asensio 7b25c8525e kcms/rules: Remove custom executable
The `kwin_rules_dialog` executable was used to launch the rules
KCM on a specific window when called from the window menu
because we couldn't depend on the `kde-cli-tools` repo

Since now `kcmshell6` lives on KCMUtils we can call it directly
2 years ago
Ismael Asensio 6082de1345 kcms/rules: Make Comboboxes bordered again
The property `flat: true`was set since the QML redesign and remained
unnoticed because it didn't actually work.

Now that the qqc2-desktop style has been fixed and correctly draws
flat (non-bordered) comboboxes let's remove it for a nicer look
(just the same as the have had all this time)
2 years ago
Xaver Hugl ec593a2364 backends/drm: consider color property changes as failed when the output is off
The atomic test it does will succeed even when it shouldn't, which can make
enabling the output again fail
2 years ago
l10n daemon script fd6d94a0be GIT_SILENT Sync po/docbooks with svn 2 years ago
Vlad Zahorodnii 3c96b21b32 effects: Fix dialogparent installation 2 years ago
Vlad Zahorodnii e88a4e34a3 Remove some include_directories()
It seems we've settled on dir/dir/header.h includes, so let's use them
consistently.
2 years ago
Vlad Zahorodnii 82ef63a3d4 wayland: Use correct signal to get notified when to destroy InputPanelV1Window
The window should be destroyed when the associated surface role is about
to be destroyed. QObject::destroyed is too late.
2 years ago
Vlad Zahorodnii bffeae89c7 Drop unused X11Window::wasOriginallyGroupTransient() 2 years ago
l10n daemon script 95f050d578 GIT_SILENT Sync po/docbooks with svn 2 years ago
Vlad Zahorodnii 017906541b Refactor compositing teardown in X11Window and Unmanaged
Currently, X11Window and Unmanaged call finishCompositing(), which tries
to destroy the window item and other associated compositing data.

Usually, it has no any effect on the window item and the effect window
because they are moved to the Deleted. However, it has some effect on
the XDamage handle.

If the X11 window is unmapped, it will destroy the XDamage handle. If
the X11 window is destroyed, it will do nothing. Why does it behave like
that? Because that's how the XDamage spec is written.

This change removes the call to finishCompositing() and refactors how
the XDamage is handled so Window::finishCompositing() is more generic.

If the X11 window is destroyed, SurfaceItemX11::forgetDamage() will be
called and SurfaceItemX11::~SurfaceItemX11() won't attempt to destroy
the damage handle.

If the X11 window is unmapped, SurfaceItemX11::destroyDamage() will be
called and destroyDamage() in SurfaceItemX11::~SurfaceItemX11() will
noop.

If compositing has been restarted, destroyDamage() in
SurfaceItemX11::~SurfaceItemX11() will destroy the damage handle.
2 years ago
Vlad Zahorodnii 48cf6a75cc Allow creating Deleted on shutdown
It helps to reduce the number of cases that have to be taken into
account when closing a window. Deleted is cheap to create too.
2 years ago
Vlad Zahorodnii ad42cfecc1 wayland: Disable text-input-v3 when it's destroyed
Destroying a zwp_text_input_v3 object should be viewed as disabling it.

isEnabled property is cached because it cannot be computed in
_destroy_resource() handler. By that time, the resource no longer will
be in resourceMap(), so TextInputV3InterfacePrivate::isEnabled() will
erroneously return false even though we expect true.
2 years ago
Xaver Hugl 71ebaebe9b backends/drm: remove unused variable 2 years ago
Xaver Hugl 54e338eaed backends/drm: remove egl config handling
Without gbm_surface, egl configs aren't needed anymore
2 years ago
Xaver Hugl 629fb00341 platformsupport/scenes/opengl: filter out external formats properly
Using a hardcoded list is error prone and doesn't work on NVidia
2 years ago
Vlad Zahorodnii c5f08d62d1 Use proper signal to get notified when to reset virtual keyboard geometry
Currently, input method relies on the fact that QObject::destroyed and
Window::closed are equivalent. But it's going to change, so make the
input method use a signal that's semantically better.
2 years ago
Vlad Zahorodnii 2dca6cd003 Extend lifetime of decoration to lifetime of Deleted
When a window is closed, a Deleted object will be constructed and the
Window's properties will be copied over to it. The long term plan is to
stop doing that, i.e. keep the Window alive but just flip a few flags to
indicate that it's been closed.

In order to unify decoration management, this change ensures that it's
okay to have decorations live as long as the Deleted.
2 years ago
Vlad Zahorodnii d563382350 Fix destruction order of alive and deleted windows
It's needed to work around the cleanup logic of decorations.

Currently, decorations have a valid QObject parent and they're managed
using std::shared_ptr. That's not a perfect combination, but changing it
is also going to be an involved task because the QObject parent is used
to look up the Window.

In long term, it won't matter since we want to get rid of Deleted.

For what it's worth, it restores the order in which Deleted and normal
windows used to be destroyed prior to
995d509e45.
2 years ago
Vlad Zahorodnii 16a07d5df2 wayland: Handle xdg_wm_base being destroyed before surface role
If a client owns several windows (for example it can be the case with
plasmashell) and it crashes, it's possible to encounter the following
case:

- xdg_wm_base resources are destroyed
- xdg_toplevel is destroyed
- another xdg_toplevel is destroyed

When kwin processes the destruction of the first xdg_toplevel, it may
ping the second xdg_toplevel. But the xdg_wm_base is already free()d by
that time, so kwin can access already released memory.

In order to prevent that, make the associated XdgSurfaceInterface
objects inert. Since XdgToplevelInterface and XdgPopupInterface will
become useless after destroying XdgSurfaceInterface, make them inert too.

As the spec states, it's illegal to destroy a bound xdg_wm_base object
while there are still alive xdg surfaces created by it so destroying the
surface role objects should be fine.
2 years ago
Vlad Zahorodnii 1f7975e271 effects/screenshot: Provide screenshot scale information 2 years ago
Vlad Zahorodnii 1b1f0c6b32 effects/screenshot: Provide information about captured window or screen
This can be useful for the screenshot capture tool if it needs some
information about the captured window or screen, for example to generate
the file name.
2 years ago
Vlad Zahorodnii 5e63f9afc9 Drop Qt::Network dependency
We used it primarily for QHostInfo, but as QHostInfo::localHostName()
docs indicate, QSysInfo::machineHostName() returns the same info.
2 years ago
l10n daemon script 5a024d7e9a GIT_SILENT Sync po/docbooks with svn 2 years ago
Vlad Zahorodnii 07b9588bd6 kcms/scripts: Remove unused stuff 2 years ago