22922 Commits (027ca22908a6f020c101ddd7e8f512fe0186655d)
 

Author SHA1 Message Date
Marco Martin 027ca22908 When an arrow key is not accepted look for adjacent views
When no qml items manage the arrow key event, the root item will manage it looking to give focus to a view in the given direction derived from the arrow key

BUG:455783
2 years ago
Xaver Hugl 369194ab72 effectshandler: ignore inputmethod on X11
BUG: 457402
2 years ago
l10n daemon script 5513291dbe 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"
2 years ago
l10n daemon script 84e5d92f67 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"
2 years ago
David Edmundson 63bf811200 Update QtQuick views at the start of the frame
Right now we update QtQuick views after a composition has rendered so
that we'll have them ready for our next frame.

One of my machines (With X11 + nvidia) was quite stuttery, profiling
shows we spend a huge amount of time with the CPU blocked waiting for
the vblank from the previous main compositing to finish swapping before
we could start processing the QtQuick rendering. Time when the CPU is
blocked is wasted time.

This patch does mean kwin's compositing cycle lasts longer but a recent
patch changes the rendering policy when we start a fullscreen effect anyway so
hopefully that should still give us enough time to render that first frame in time.
2 years ago
Aleix Pol 4384f9c5fd xkb: Use Ctrl+Mrys+Zenkaku_Hankaku to toggle the touchpad 2 years ago
Aleix Pol aee8f5d648 xkb: Add a workaround to support Zenkaku_Hankaku keycode
It's not working otherwise and some hardware uses it for toggling the
touchpad.
2 years ago
Vlad Zahorodnii c3d5c3db1d x11: Add a helper to get the default screen
Since the screen number is well-known, we can look up the default
screen on demand. Note that xcb_get_setup() is pretty cheap as it
simply returns a const pointer to pre-allocated data.
2 years ago
Aleix Pol 94ee33e9be wayland: Fix touch event delivery to subsurfaces
Use SurfaceInterface::inputSurfaceAt when deciding which surface are we
entering when sending a pointer event from a touch, in case it falls
onto a subsurface.

BUG: 452967
2 years ago
Aleix Pol c73444dd12 wayland: Do not allocate a full list just to check if there's values 2 years ago
Vlad Zahorodnii 40044f21e1 effects: Honor transforms in OffscreenEffect
This ensures that transforms are honored with effects such as wobbly
windows.
2 years ago
Arjen Hiemstra 15fbddc3d6 Register KWin::SessionState with QMetaType
Otherwise it cannot be used in scripts - like the sessionquit effect
which uses it to check if we're actually shutting down.
2 years ago
Arjen Hiemstra bb91c94855 Expose Workspace::showingDesktop and a setter as D-Bus api
This allows us to unify the X and Wayland codepaths that currently go
through window-system specific IPC. It also allows us to easily track
who called "setShowingDesktop" and cancel the effect when that client
disappears.

CCBUG: 449445
2 years ago
Nicolas Fella e0a6d02984 [x11] Fix loading monitor edid
i is the counter for the crtc loop, not the monitor loop

This fixes loading the edid for all monitors and thus the output identifier effect
2 years ago
ivan tkachenko 54e74df57b
effects/private: Actually fade out minimized windows on exit
This is most likely just an oversight/omission from the times when the
component was actively developed. There are five states total, including
one for realtime interactions; four others need to be transitioned to.
2 years ago
ivan tkachenko 2bca18bc5f
effects/overview: Fix animation of windows scaling back from a desktop bar
Due to nondeterministic nature of signal propagation in QML, changing
both targetScale and state depending on dragHandler's activity could
result in targetScale wrongly updating before the state change(and thus
applied property changes and subsequent animated transition).

This fixes a bug when a window dragged to the top (but not onto another
desktop) would animate its position back to its original position on a
heap, but the scale would remain constant until the end of animation
and only then rapidly jump back to a normally scaled state.
2 years ago
Kai Uwe Broulik 4c6010b078 scenes/opengl: Check whether pixmap is valid before generating quads
Quad generation needs a valid surface pixmap. This did not surface
before as the pixmap was only accessed when looping the region which
typically was empty without a pixmap.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2 years ago
Kai Uwe Broulik 1e3a81249c SurfaceItem: Use `pixmap()` for quad generation
This uses the previous pixmap if the current one is invalid,
which ensures the generated quads have sane coordinates.

The issue caused flickering while resizing Chrome after
2f4fa23e61

While at it, move `size` out of the loop as it doesn't change.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2 years ago
David Edmundson 259f4d7838 Drop superfluous toPoint calls in input 2 years ago
David Edmundson 89be63f600 Port windowStepUserMovedResized to floating geometry 2 years ago
David Edmundson 97fe0613e6 Support QRectF in debug console 2 years ago
Vlad Zahorodnii 9177fd1835 kwineffects: Make clientArea() return a QRectF
Make EffectsHandler::clientArea() return same type as
Workspace::clientArea().
2 years ago
Xaver Hugl 34344c8dc4 input: don't forward gestures used by KWin to applications
If both compositor and applications were to use these gestures at the same
time, that would be quite confusing for the user. This also works around
a bug in Wine that makes applications crash.

BUG: 455952
2 years ago
Vlad Zahorodnii e604b6852f backends/drm: Remove Compositor dependency
This breaks cyclic dependency between Compositor and DRM backend, there
are still indirect dependencies though. However, fewer cyclic
dependencies should make the architecture more cleaner and easier to
tweak.
2 years ago
ivan tkachenko 51326dfb85
effects/private: Group Repeater's alias properties together 2 years ago
ivan tkachenko 766d64c1e5
effects/private: Port potential misuse of a dragHandler to activeDragHandler
There are two drag handlers, and an `activeDragHandler` property to
switch between them. That's what other code is doing in this component.
2 years ago
ivan tkachenko 1c1cf61b1f
effects/private: Drop unused property dragHandler 2 years ago
ivan tkachenko aa6200495c
effects/private: Make WindowHeapDelegate dragHandler less confusing
There were too much `dragHandler` identifiers per square meter of code.
2 years ago
ivan tkachenko f48b306665
effects/private: Set required property for default WindowHeapDelegate
Otherwise this WindowHeap type is not usable without custom delegate.

    /usr/lib/qml/org/kde/kwin/private/effects/WindowHeap.qml:111:23:
        QML Component: Cannot create delegate
    /usr/lib/qml/org/kde/kwin/private/effects/WindowHeapDelegate.qml:21:5:
        Required property windowHeap was not initialized
2 years ago
ivan tkachenko da3b731c1a
effects/overview: Clean up QML/JavaScript code 2 years ago
ivan tkachenko 94168cd7c1
effects/private: Drop unused properties 2 years ago
ivan tkachenko 12b72d614e
effects/private: Port ExpoLayout to using anchors 2 years ago
ivan tkachenko 22156777fb
effects/desktopgrid: Add explicit spacing for buttons layout 2 years ago
Aleix Pol dcb1836c6e wayland/autotests: Make sure TestWaylandSurface deletes the surfaces it uses 2 years ago
Aleix Pol a94f5c0d7f wayland/autotests: Make sure SeatInterface gets deleted 2 years ago
Aleix Pol 4af69643e1 wayland/autotests: Make sure we delete the seat
The parent is the second argument, it therefore was nullptr and it broke
the assumption from few lines below that it's owned by the display.
2 years ago
Aleix Pol bbb4c20c8a libinput: Make sure config values get deleted
Switches to a shared pointer rather than a raw one. It would leak, which
in general is not a big problem but it would flood the output when
running tests with ASAN. Also it's the right thing to do.
2 years ago
Vlad Zahorodnii a513b795ad backends/wayland: Fix a crash on shutdown
The wayland backend changes the dpms mode when the enabled state of the
output changes. This creates problems when destroying all outputs on
shut down. The wayland backend calls InputRedirection's methods, but
InputRedirection is already destroyed by that time.

While the crash can be fixed by guarding input() in createDpmsFilter()
with an if statement, changing dpms mode in updateEnablement() doesn't
seem like a good idea because Output changes unrelated states (enabled !=
dpms mode), so let's get rid of it.
2 years ago
ivan tkachenko 3da3489aaa
effects/private: Don't show another window's hover/highlight while dragging
This produced really weird impression that if you will drop a window it
will be actually dropped on another window??
2 years ago
ivan tkachenko 54917f038e
effects/private: Raise currently dragged window higher than anything
BUG: 456936
FIXED-IN: 5.25.4 5.26
2 years ago
ivan tkachenko 074fed313b
effects/desktopgrid: Fix dragging and swapping desktops on a grid
Amends 00ba4aedcc.
2 years ago
ivan tkachenko f1a45b6509
effects/private: Drop opacity binding inside WindowHeapDelegate
This targetOpacity is nowhere to be found. This is a relic of past
development. Currently code that needs to alter opacity based on drag
state does so externally by setting opacity on a delegate as a whole.
2 years ago
David Edmundson a7520b3659 Fix activity swtiching through UserActions menu
On wayland the code to keep windows on the current activity whilst the
window was broken was completely broken in porting. We only held the
block for the duration of the method even though the popup remained open
for longer.

On X11, when removing the window from the current activity it would not
update correctly and remain visible. The code path was as follows:
 - the menu is shown an event loop is started
 - we change the activities
- as we close the menu focus changes and workspace calls
UserActionsMenu::close this unsets m_window
- We then never call the blockActivityUpdates(false) at the end of
UserActionsMenu::show

This patch addresses both at once.

We get rid of the nested event loop as that was always evil. This means
slotWindowOperation no longer needs to be queued.

We perform cleanup of m_window and the activity blocker when the menu
closes which should be safer.

BUG: 456873
2 years ago
ivan tkachenko 7b24df247d
effects/overview: Fix anchor on a placeholder message
ScreenView.qml:202:17: Unable to assign QQuickItem to QQuickAnchorLine
2 years ago
Vlad Zahorodnii 04d1bef9f8 Make Platform::outputs() pure virtual method 2 years ago
Vlad Zahorodnii a198516871 Drop Platform::enabledOutputs()
At the moment, a platform should provide two output lists - one that
lists all available outputs, and the other one that contains only
enabled outputs. In general, this amounts to some boilerplate code and
forces backends to be implemented in some certain way, which sometimes
is inconvenient, e.g. if an output is disabled or enabled, it will be
simpler if we only change Output::isEnabled(), otherwise we need to
start accounting for corner cases such as the order in which
Output::isEnabled() and Platform::enabledOutputs() are changed, etc.
2 years ago
Vlad Zahorodnii 2629007eef Make outputs disabled by default
This can be used to make our backends more multi-purpose. At the moment,
new outputs are enabled by default, but it makes sense to do otherwise.

For example, if an output is disabled by default, it would be possible
to delegate initial output configuration to layer above, to kwin.

In long term, the drm backend would need to scan connectors, create an
Output for every one of them, kwin sees new outputs and tries to apply
the initial output configuration, which includes the enabled status.
2 years ago
ivan tkachenko 854aebb3ae
Mark window type properties as CONSTANT
Since we don't have any means of getting notified by _NET_WM when a
windowType changes, and since KWin would handle that quite poorly, AND
since no one does that in real-world applications anyway, we might as
well mark those getters as CONSTANT, so that QML engine would stop
complaining about depending on non-NOTIFYable properties.

According to the specification, the window type should be decided before
a window gets mapped.
2 years ago
David Edmundson 2073415f91 Ensure size is valid after maximising
In X11 when a window is maximised if the client is unable to fufill the
space provided we centre align the window.

With the new floating point geometry behaviour of centreing changes.
Instead of a 1 pixel gap at the top, we get a 0.5 pixel gap either side.
When we get into the codepath to "fix" the window in `closeHeight` we
only move the top, giving us an invalid buffer size.

We don't really want to change the logic here; on xwayland with the
scaling opt-out path it's feasible for a floating sized logical size to
still be representable. This code rounds to the native unit after all
the logic has taken effect.
2 years ago
Alexey Andreev c61515cd8d kwinglutils: restore alignment logic for Mali GPU
Contributes to:

https://invent.kde.org/teams/plasma-mobile/issues/-/issues/172
2 years ago