-
-
Notifications
You must be signed in to change notification settings - Fork 5
Pull KWin patches (2023-12-02 - 2024-02-21) #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
With color management, everything would get clamped to 1 nit otherwise. BUG: 477841
ButtonPressEvent::state includes keys and buttons prior to the button press has been generated. On the other hand, it appears that QMouseEvent::buttons() should include currently pressed buttons, i.e. the button that has been just pressed should be in that bitfield. This is important for QQuickDeliveryAgent, which checks QMouseEvent::button() and QMouseEvent::buttons() to decide whether to send the button event only to tap handlers or both tap handlers and mouse areas. BUG: 476653
There is a window title beneat the stock WindowHeapDelegate. The label was bound to the size of the window, but because this animates our label resizes every frame too. Given the label is only at full opacity when the window is filling the ExpoCell, we can set the width of our label to that directly. This looks less glitchy as we don't change wrapping during animation, but also should have a noticable performance impact as we avoid re-laying out multiple times.
It's visible by default but has 0 opacity, which results in unnecessary relayouting. The opacity is vice versa as well.
Overview was trying always to animate the opening with 2 animations at the same moment: * the transition from initial to active in WindowHeapDelegate * the animation on the partialactivationfactor was always ran, partial or not this resulted in jankier animations than they could be. now base only on partialanimationfactor, so we a re sure there is one single way to trigger the effect
Otherwise it's barely visible.
…mbnailItem We just need to ensure that qtquick rendering commands don't use the window thumbnail until it's ready. The CPU can continue executing its commands.
Currently FrameSvgItem is used to highlight selected or hovered windows. But the problem with it is that it's a bit heavyweight. As a way around it, we could put it in a Loader, but that's going to be bring a set of other challenges. As an alternative solution, this change replaces FrameSvgItem with a simple outline. It still produces decent visuals and it's simpler.
This avoids keeping old and creating new window thumbnails after the task switcher is hidden.
The task switcher doesn't initialize thumbnailGridView.currentIndex properly after the Plasma.Dialog has been just created.
Most windows are typically not hovered, so we don't need to create a Button for every one of them.
Effects like overview can create more than one thumbnail for the same window. For example, if you have 4 virtual desktops, the overview is going to create 9 window thumbnails for the desktop background, which in its turn means that each thumbnail is going to have its own texture. That's not great. WindowThumbnailItem.sourceSize has been dropped because it's unused and will complicate texture caching. CCBUG: 455780
In lockstep with KWin.
The compilation step still takes a significant amount of time on the first launch. On my machine, it's around 1s. Even if it happens just once, freezing the session for 1 second is not great. This change makes the overview effect load main.qml asynchronously when plasma session starts. By the time the session is loaded, it should be ready. CCBUG: 455780
It causes hangs, and thus doesn't actually help with accessibility but makes it worse. Until that's fixed, it needs to stay disabled BUG: 450940
WindowThumbnails are image providers meaning it can provide textures directly to ShaderEffects layer.enabled is effectively a ShaderEffectSource meaning we render our single desktop background item into an offscreen texture to ultimately contain our desktop background. We can cut out the middle-man and use the DesktopBackground as a source directly saving a massive texture being generated.
Captions are set to elide with ElideRight, which does allow for multi-line captions. However, this means that the height of the captions depends on their width (since a shorter width results in more lines), and the width of the captions depends on the size of the window thumbnail, which depends on the height of the caption to be positioned. If the caption is really long, this can cause visual glitches. Having a maximum line value avoids that. BUG: 477103
Milou.ResultsView loads runners regardless whether the query string is empty. It's not clear what milou should do. There are valid arguments both in favor and against preloading runners. This change puts Milou.ResultsView behind a Loader so milou is loaded when it's actually needed and not when starting overview. CCBUG: 455780
The OpacityMask is used purely for rounding the corners. We can get rid of it by using ShadowedTexture which does the same thing while also drawing the shadow, meaning we can also eliminate the ShadowedRectangle.
When users simultaneously press Shift and Tab, the keys are sometimes registered as Shift+Tab, and sometimes as Shift+Backtab. So we need to match received Shift+Tab against shortcuts containing Shift+Backtab, and vice versa. Previously the code only checks for the first case. This commit adds checks for the second case. BUG: 438991 FIXED-IN: 6.0
Reduces the compile time.
In default shortcuts, change +Shift+Backtab to +Shift+Tab. Functionally the behavior doesn't change. But Shift+Tab is better since it is - easier to understand (not everyone knows what Backtab is) - more consistent with other shortcuts containing Shift: we use Alt+Shift+1, instead of Alt+Shift+! - more consistent with how user defined shortcuts with Shift and Tab are displayed and stored BUG: 422713 FIXED-IN: 6.0
The overview effect uses the type of the dragged object to determine if a single window is dragged or the entires desktop. Commit 0ff4f84a changed the type of mainBackground, but did not update the code for matching the type. BUG: 478746 FIXED-IN: 6.0
Item type is incredibly fragile as a way to determine what was dropped, as proven by recent breakage. Instead, we can use `Drag.keys` to provide metadata about what is being dragged/dropped.
… heap Without this, windows like xwaylandvideobridge would show up. BUG: 463542 FIXED-IN: 6.0
GL_RGB8 isn't supported by OpenGL ES BUG: 479055
Some our tests assume that with "none" border size, the decoration has no borders. When breeze paints an outline, that's not the case.
…ffscreenQuickView QEvent::isAccepted() is initialized to true by default. BUG: 480538
This is because the Overview will activate itself at the end of a 1:1 gesture, and a toggle action might actually deactivate it rather than activate it.
Some cursor themes don't have a "default" cursor. Add a fallback to "left_ptr" for such themes.
When a QPromise reports results, it's not necessary that the QFutureWatcher is going to report it immediately. That can happen at some point in the future, which is okay according to the QFuture api contract. Due to that, we cannot assume that the stored Output and EffectWindow objects pointers are valid when the QFutureWatcher::finished is emitted.
Imagine the following case: - the window is hidden, slideOut() is called but no deleted reference is created because the window is not deleted - the window is closed, slideOut() won't be called because the window is hidden and SlidingPopupsEffect::slotWindowClosed() ignores closed windows that are already hidden - the window is deleted in meanwhile - the sliding popups effects attempt to delete m_animations[w] entry, but since "w" is a dangling pointer at this point, visibleRef is going to access released memory To fix that, make slideOut() always ref the window.
In the late Plasma 5 times we agreed that it would be better to drop "active mouse screen" option and stick with last interacted screen approach instead. However, it was forgotten and nobody has pursued this goal, so let's hide the option in the system settings ui at least. The option is not completely removed because some parts of kwin would need adjustments. Note that this only changes the config values.
when in overview mode, don't scale down WindowHeap, as this will cause ugly glitches, but resize it down instead. Still use transforms when it goes in desktop grid mode, at least for now probably future further refactor can still help things Before:  After:  CCBUG:475682
There are a few issues: - it's incompatible with Version 6 format - activity shortcuts cannot be changed in kwin - overview shortcuts don't need to be touched BUG: 480758
These shortcuts make more sense to be used with Meta+Tab and Meta+Shift+Tab. Let's keep them reserved for the task switcher. Cycling between overview modes is not something that requires Meta+Tab to be assigned to it by default.
Plasma expects new names and methods for the interface.
Views are owned by the C++ backend, but also retrievable by invokables to get neighbouring screens from JS space. By default Qt then transfers ownership of the view to the QML collector. This results in double ownership. BUG: 480788
The mouse area is no longer a sibling of the window heap, which produces a warning. BUG: 481106
While tabbox switching is usually a keyboard operation, we offer also a mouse-friendly way to launch it via screen edges, and should allow to switch directly on mouse click. BUG: 481267 FIXED-IN: 6.0
Instantiators create objects when they're added to a model, and deference when when they're removed from the model. When we explicitly set a parent in onObjectAdded we're creating a second reference. This does get cleaned up later, but not in the same frame. This brings us in line to what QQmlRepeater (which works with items) does internally for items being added and removed. BUG: 478777
They are currently unused, but might be useful in the future.
Caps lock only locks capitalization of letters, making it artificially also trigger shift in the context of KWin only causes problems
otherScreenThumbnail is used to fake a window thumbnail being dragged half in the old screen, half in the "new" one (or even more than two) right now the condition to use it is purely the "real" thumbnail x or y change, but sometimes especially when the item has just been created and is being laid out it might trigger an itemDraggedOutOfScreen when no-one was dragging. We should never make otherScreenThumbnail visible when we aren't dragging a thumbnail, so check for Drag being active in the source item. the item will be kept visible even if drag becomes inactive as before, as it still needs to be visible for the reset animation BUG:480564
…nterface QWindowSystemInterface goes via QGuiApplication which updates some internal properties. Most notably QGuiApplication::lastCursorPosition which is used by advanced menu closing behaviour. BUG: 478061
Overview and Grid modes have shortcuts assigned to them. While they provide a way to toggle the overview effect between on and off state, in other words overview <-> off or grid <-> off, it's not possible to move between the modes by pressing those shortcuts, e.g. off -> overview -> grid -> overview -> grid -> ... -> off. The culprit seems to be that EffectTogglableState has two "inactive" states - Inactive and Stopped. It's counter-intuitive and needs a further cleanup. To make switching between overview modes work, this change makes EffectTogglableState::toggle() toggle the state based on the Active state. There's only one active state. CCBUG: 481335
kwin does not support true multiscreen drag and drops. Events are sent to an offscreen location of the screen initiating the drag. Therefore it is important that off-screen items do not process drop events BUG: 481331
Otherwise the binary name is used as display name, causing all kwin shortcuts to be registered under kwin-6.0-delete-desktop-switching-shortcuts
Zoom push tracking now considers the layout of the user's monitors, accounting for situations where the monitor layout doesn't form a perfect rectangle. These changes help prevent the zoom area from being unable to reach certain areas of the workspace depending on which edge of which screen the user pushes against. One known issue is that, if the mouse moves too quickly, the zoom area can sometimes imperfectly track the movement. It will look the same as the original bug (areas of the screen will appear to be cut off/unreachable), but moving the mouse in the opposite direction a tiny bit snaps the zoom area back to where it should be. BUG: 467182 @teams/qa Heads-up that I'm very blind, and this is the first time I've ever contributed to a KDE project. I've tested the changes on my system and they fix the bug, but I want to make sure I didn't break anything in the process.
In almost all cases it's duplicated in the name, and if the user manually changes the name, the custom name should be shown without additional numbers CCBUG: 481576 Co-authored-by: Vlad Zahorodnii <[email protected]>
The user may have no usecase for the grid view mode, i.e. they may want to activate overview, do their thing, and then return back to normal desktop. However, with the current behavior, there's one extra step (switch to grid mode) in order to go back to desktop. In hindsight, we should have added different screen edge actions for overview and grid modes. This can be done in 6.1. BUG: 481335
We require KF6 and Plasma 6.0 versioned packages.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
According to listings in #6.
Closes #6