20266 Commits (b44f33c7ed2ac22079c174c4e38d2f8170b527c0)
 

Author SHA1 Message Date
Alexander Lohnau 9dc6fd35db
GIT_SILENT Revert accidental change 3 years ago
l10n daemon script 2a3ec321a1 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"
3 years ago
Alexander Lohnau dffbfcc9f7
Fully port away from KPluginLoader 3 years ago
Alexander Lohnau e431b453b6
Port away from KPluginLoader::findPlugins 3 years ago
Nate Graham 6c2834cc8a decorations: small refactor for decorationpalette.cpp
Handle header color schemes first since the code is smaller for that
block, which makes things more readable.
3 years ago
Nate Graham 00ade26624 decorations: when color scheme has no Header colors, don't ask for them
First we check to see if the color scheme has header colors, and if it
doesn't, we turn around and ask for them anyway, relying on implicit
behavior in kcolorscheme that falls back to Window colors when Header
colors are requested but are not present. Instead, let's just ask for
Window colors to avoid the run-around and stop relying on implicit
behavior.
3 years ago
Vlad Zahorodnii 483ef644df Fix build 3 years ago
Vlad Zahorodnii 7d3bce21a1 plugins/idletime: Fix processing of user activity
Currently, idle timers are not restarted on user input which triggers
the lockscreen even though the user is active at computer.

This change fixes that by making sure that idle timers are restarted
whenever SeatInterface's timestamp changes, i.e. user moves the pointer
or presses a key, etc.
3 years ago
Vlad Zahorodnii 7d692fd2a4 plugins/idletime: Remove m_started boolean flag 3 years ago
Vlad Zahorodnii a3de9bc93b kcmkwin: Load builtin effects from metadata files
Linking builtin effects against KCMs is really awkward. This change
decouples builtin effects from KCMs that use EffectsModel.

In order to discover builtin effects, metadata files are installed in
kwin's data dir, which will be subsequently read by EffectsModel.
3 years ago
Vlad Zahorodnii 141947d2e8 effects: Link builtin effects with executables
The main motivation behind this change is to prepare kwin for importing
kwayland-server code in libkwin.

As is, builtin effects are linked with libkwin. Some builtin effects
have wayland specific code. If we move wayland stuff in libkwin, there's
going to be a circular dependency between kwin4_effect_builtins and
libkwin targets.

This change intends to break that dependency by linking builtin effects
to kwin executable.

The main issue with that is that EffectLoader would need to discover the
effects indirectly. QStaticPlugin is used for that purpose.

Besides breaking the cyclic dependency, it makes builtin effects use the
same plugin infrastructure in libkwineffects that external effects use.

Metadata in src/effects/effect_builtins.cpp was converted in a list of
python dictionaries, which was fed to a python script that generated
main.cpp and metadata.json files.
3 years ago
Vlad Zahorodnii 2019dcd0fe Add support for static effect plugins
With static effect plugins, builtin effects can be linked to
executables. It also makes libkwin one step closer to being more
reusable.
3 years ago
Xaver Hugl 1763139834 platforms/drm: fix disabled outputs with legacy drivers
m_primaryBuffer could be nullptr when a pipeline was inactive before, causing
a crash
3 years ago
Ömer Fadıl USTA 3ec6dab5d0 Add other missing includes to fix bsd build 3 years ago
Ömer Fadıl USTA a2a012be26 Add missing include to fix bsd compile problems 3 years ago
l10n daemon script d154da1e0b 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"
3 years ago
Xaver Hugl fbb5c95cc4 platforms/drm: tie primary planes to crtcs 3 years ago
Xaver Hugl 3a9491ca6d platforms/drm: Move legacy cursor handling into DrmCrtc
Makes things easier for tiling and reduces the complexity of DrmPipeline
3 years ago
Xaver Hugl a70321c592 platforms/drm: split DrmObject::Property out in its own files 3 years ago
Xaver Hugl 307b5ce3ca platforms/drm: prettify some headers
Makes them much more readable
3 years ago
Xaver Hugl 72af309317 platforms/drm: reverse output creation order
This was inverted from 5.22, which switches plasma layouts and the default
Xwayland primary screen.
3 years ago
Vlad Zahorodnii 4dafacc00b kwineffects: Stop linking kwayland-server
As is, libkwineffects doesn't use any specific apis in kwayland-server,
it simply "forwards" wayland display and surfaces from libkwin. Given
that, there is no need to link libkwineffects with kwayland-server. If
an effect needs to access wayland specific stuff, it can link explicitly
against kwayland-server.

The main motivation behind this change is to further loosen up
dependencies between various kwin components and kwayland-server so the
latter can be moved back to kwin.
3 years ago
Aleix Pol a9ccfba768 Fix inputmethodtest
We needed to simulate a touch event so that it doesn't decide to ignore
the next events.
3 years ago
Vlad Zahorodnii a5a2deef60 kwineffects: Remove effectively unused surface_interface.h include
SurfaceInterface can be an opaque pointer.
3 years ago
Vlad Zahorodnii 85f8a53360 x11: Properly unredirect windows if compositing is not possible
Before attempting to create scenes, kwin will redirect windows but if
the opengl scene can't be created, it won't unredirect windows, which
seems to cause issues on aarch64.

BUG: 443953
3 years ago
Vlad Zahorodnii dda0c24187 wayland: Remove absolute position from processMotion() that handles relative moves
API-wise it's odd to require absolute position with relative pointer
moves.

This cleans up some of InputRedirection code by making it simply forward
pointer input events from input devices to the pointer input device
handler, which knows better what to do with the delta value.

The pointer input device handler will compute the absolute position based
on the specified delta value, but it could also do something else, e.g.
not move the pointer at all if it's locked, etc.
3 years ago
Alexander Lohnau 8adfd2f244 Use enum value for KAuthorized::authorize
Task: https://phabricator.kde.org/T11948
3 years ago
Vlad Zahorodnii 6d5fc9fd30 Restore old behavior of Workspace::clientArea(clientOpt, Toplevel)
When geometry updates are blocked, the output doesn't get updated. This
breaks Workspace::clientArea() overload that takes only the window.

Previously, clientArea() would look up the output where the window is
every time it's called, so the fact that the screen id or AbstractOutput
is unsynchronized with the frame geometry was irrelevant.

This change restores the old behavior as 5.23 is affected by the
output() being out of sync with the frameGeometry(). Specifically, when
kwin starts managing an X11 window, it will block geometry updates,
setup the window, e.g. make it fullscreen, and unblock geometry updates.

Since Workspace::clientArea(clientArea, Toplevel) uses the output(),
X11Client::setFullScreen() will most likely put the X11 window at a
wrong output if it's called inside X11Client::manage().

BUG: 443787
3 years ago
Vlad Zahorodnii 23e5039918 Fix build on Gentoo
AbstractEglBackend includes option.h, which includes main.h, which
includes QApplication. Since SceneOpenGLBackend doesn't link against
Qt::Widgets, kwin fails to build on Gentoo, but not on other distros
for some reason...
3 years ago
Aleix Pol ff618e9f41 Do not ask for decoration settings without guarding
Otherwise we crash when no decoration is set (e.g. Plasma Mobile)
3 years ago
ivan tkachenko aaa060d6c1 KCM: Implement better layout
Text labels without extra margins on the left looked mis-positioned.
3 years ago
Rodney Dawes 518c75a042 InputMethod: Use new API to pass modifiers map along to clients 3 years ago
Rodney Dawes 9818f4a4e5 InputMethod: Update for kwayland-server API change with keysym events
To avoid needless conversion of modifiers in kwayland-server, we needed
to break API so that the modifiers are simply passed through.
3 years ago
Vlad Zahorodnii cc98001d4c Use move resize geometry in AbstractClient::applyWindowRules()
Abstract clients tolerate passing the shaded window geometry to
moveResize().

But the main issue with applyWindowRules() is that it uses the current
frame geometry even though it calls moveResize(). It's not a big deal
but it's error prone.

This change ports applyWindowRules() to the move resize geometry, which
makes code more straightforward and ensures that kwin uses right
geometry type with moveResize().
3 years ago
Vlad Zahorodnii 368bbde1ff Make geometry updates blocker pass last move resize geometry
X11Client tolerates passing shaded geometry to moveResize() and in many
cases kwin already does that.

Another issue is that this doesn't align well with new async geometry
handling abstractions. pos() can't be used because it corresponds to the
current frame position.

We can safely pass the last move resize geometry. It simplifies code a
bit and makes sure that everything works as expected with the move
resize geometry.
3 years ago
Vlad Zahorodnii b90975b7a2 Replace AbstractClient::adjustedSize() with a simpler alternative
Currently, adjustedSize() does two things - it computes and constrains
the natural size of the window.

In many places where adjustedSize() is used, the natural size doesn't
need to be constrained and in some it's actually undesired because
AbstractClient::constrainClientSize() doesn't allow the client size to
be 0x0, which can happen when dealing with a client that has no buffer
committed yet.

This change replaces adjustedSize() with implicitSize(), which simply
calculates the natural frame size based on the current client size.

If the frame size needs to be constrained, for example during
interactive move-resize, use constrainFrameSize() or if you need to
constrain the client size - constrainClientSize().
3 years ago
Vlad Zahorodnii a195290600 Simplify AbstractClient::applyWindowRules()
Trying to reconstrain the geometry after applying rules is unnecessary
because if the geometry is forced using a rule, resizeWithChecks()
should not change it; if the window is maximized or has entered fullscreen
mode, window gravity is irrelevant. If the window is shaded, this
resizeWithChecks() is not needed.

This change simplifies AbstractClient::applyWindowRules(), which allows
to split adjustedSize() to further simplify geometry handling.
3 years ago
Aleix Pol 3e77907d21 inputmethod: Use touch events to decide if the panel is shown not the state
Prefer hiding/showing the panel (i.e. the window) when not a touch event
than stopping to make the inputmethod active.
This way we remain compatible with non-virtualkeyboard inputmethods.
3 years ago
Xaver Hugl 5b9deafa14 InputMethod: only activate virtual keyboard when used with touch 3 years ago
Vlad Zahorodnii f1e99e971f scripting: Guard against nullptr m_client in WindowThumbnailItem
BUG: 443765
3 years ago
Vlad Zahorodnii 59a4a908f9 Properly update parent item's bounding rect when moving item
The bounding rect of an item is in the item-local coordinate space. If
the item is moved, its bounding rect won't change, but the parent's
bounding rect, may change.

BUG: 443756
3 years ago
Vlad Zahorodnii ff3465a80e Fix AbstractClient::adjustedSize() for wayland windows with no committed buffer
AbstractClient::constrainClientSize() forces the minimum client size of
1x1.

If AbstractClient::adjustedSize() is called before the XdgToplevelClient
is mapped, it will return 1x1 rather than 0x0 as expected, which will
confuse

    QSize s = adjustedSize();
    if (s != size() && s.isValid())
        resizeWithChecks(s);

in AbstractClient::applyWindowRules(). Since 1x1 is different from 0x0,
the xdg-toplevel surface is going to be resized to 1x1.

BUG: 443705
3 years ago
Vlad Zahorodnii d4dd370cf3 autotests: Fix ASAN issues
Currently, InputRedirection is not destroyed before waylandServer(),
unlike in kwin_wayland, which causes some null dereferencing.
3 years ago
Vlad Zahorodnii b4a4e8a45d Drop WaylandServer::terminateClientConnections()
Display will destroy all client connections before getting destroyed.
3 years ago
Vlad Zahorodnii e550480c43 Rework input method teardown logic
Explicitly destroy input method rather than wait for the input method
connection to be destroyed by WaylandServer, it's less error prone.

BUG: 443603
3 years ago
Vlad Zahorodnii 4f46da46fc wayland: Move relative pointer extension instantiation to WaylandServer
Whether relative pointers are supported doesn't depend on the input
backend. This change moves the instantiation of the extension to the
WaylandServer class to make code more consistent.
3 years ago
Aleix Pol 3da0725404 Fix build
We forgot to remove the subdirectory when moving builtin plugins into
separate targets.
3 years ago
Vlad Zahorodnii 6b015d1e6e libinput: Drop mm position in Connection::pointerMotionAbsolute()
The position in millimeters is unused and it can't be applied to virtual
input devices.
3 years ago
Vlad Zahorodnii bf620fbe04 Move Xkb::LEDs enum to KWin namespace
With the LEDs enum being defined in kwinglobals.h, wayland_server.h
won't need to include keyboard_input.h, which is good for compilation
times and wayland_server.h will drag less stuff, e.g. QtWidgets (input.h
includes QAction)
3 years ago
Vlad Zahorodnii 9cdd363fa1 effects: Pass full name to kwin4_add_effect
This way, it's more clear what target name is.
3 years ago