Bug 513950 - UI rebuilds itself after every keystroke
Summary: UI rebuilds itself after every keystroke
Status: CONFIRMED
Alias: None
Product: krunner
Classification: Plasma
Component: general (other bugs)
Version First Reported In: 6.5.4
Platform: Fedora RPMs Linux
: NOR minor
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-12-29 14:17 UTC by Tobias Zwick
Modified: 2026-01-05 13:19 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
pause the video at the right moment to observe how the window looks like "in-between" (103.02 KB, video/webm)
2025-12-29 14:17 UTC, Tobias Zwick
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Zwick 2025-12-29 14:17:42 UTC
Created attachment 188061 [details]
pause the video at the right moment to observe how the window looks like "in-between"

SUMMARY
Any change to the input field triggers a complete rebuild of the UI, which is very well visible due to the window being seemingly repositioned for one frame or so. This is very disruptive.

STEPS TO REPRODUCE
1. type something into the krunner text field

OBSERVED RESULT
Each keystroke repositions the window for a frame or so to then return to the correct window size/position a frame or so after, which causes a disruptive blinking effect.

EXPECTED RESULT
No visual repositioning.

SOFTWARE/OS VERSIONS
Operating System: Fedora Linux 43
KDE Plasma Version: 6.5.4
KDE Frameworks Version: 6.21.0
Qt Version: 6.10.1
Kernel Version: 6.17.12-300.fc43.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 5700X 8-Core Processor
Memory: 32 GiB of RAM (31.3 GiB usable)
Graphics Processor: NVIDIA GeForce GTX 1660 SUPER
Comment 1 cwo 2026-01-05 13:19:50 UTC
I can reproduce this and did some testing.

It's specific to krunner and its use of a layershell window and does not happen in e.g. the search widget, which also uses Milou's ResultsView like p-w krunner's RunCommand. When the model gets new data from the runners, the layershell window resizes well in advance of the actual view being updated. (When recording using Spectacle, it tends to happen 1-2 video frames before that). After the model's itemsAdded signal, but before the ListView's countChanged signal (which is on the same frame as all the qml sizes being updated, including the QQuickWindow).

When the layershell window resizes, one of three possible things seems to happen, and I could not find a pattern in which one happens:

- the view stays where it is at the size it has, but the window size is increased at the bottom. This one is generally not noticeable, it's just a bit of extra empty space.
- the view stays the size it has, but is shifted down (and in rarer cases up, somehow) by the changed size. This is creates a momentary graphic artifact
- the view stays where it is, but is scaled to the new size. This creates a momentary graphic artifact that also looks very bad, but a little different to the first one

I don't know enough about layershell to track this further, and my attempts haven't gone very far. If it helps, I have a bunch of videos, I can reproduce it rather consistently on this computer.