Bug 431432

Summary: Desktop widgets change place at system startup when Plasma's resolution differs from SDDM's resolution
Product: [Plasma] plasmashell Reporter: terkald <adressepoub.rl>
Component: ContainmentAssignee: Marco Martin <notmart>
Status: RESOLVED FIXED    
Severity: normal CC: adressepoub.rl, katyaberezyaka, nate, plasma-bugs, zackloods0
Priority: NOR    
Version: 5.20.5   
Target Milestone: 1.0   
Platform: Other   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=360478
https://bugs.kde.org/show_bug.cgi?id=431359
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description terkald 2021-01-11 11:46:14 UTC
SUMMARY
the plasmoids move at each login on a high pixel density screen. I didn't want to put the fractional scaling for reasons of incompatibility with some software, so I just changed the desktop resolution.

This bug is similar to this one regarding what is observed: bug 360478

Note: the screen resolution is not the same as in sddm (see bug 431359)
Strangely, I am convinced that if sddm had the same resolution, the bug would be avoided. However, the bug is indeed a bug independently of sddm.


STEPS TO REPRODUCE
1. change the resolution of the default Plasma desktop
2. put some plasmoids on the desk
3. restart

OBSERVED RESULT
the plasmoids are no longer in the place where they were put. 


EXPECTED RESULT
The plasmoids should always be in the place where they have been placed by the user. 


SOFTWARE/OS VERSIONS
Operating System: openSUSE Tumbleweed 20210108
KDE Plasma Version: 5.20.5
KDE Frameworks Version: 5.77.0
Qt Version: 5.15.2
Kernel Version: 5.10.4-1-default
OS Type: 64-bit
Processors: 8 × Intel® Core™ i5-8265U CPU @ 1.60GHz
Memory: 7.6 Gio of RAM
Graphics Processor: Mesa DRI Intel® UHD Graphics 620
Comment 1 Nate Graham 2021-01-12 01:07:22 UTC
As a data point, does it start working if you use the native resolution of the screen, causing SDDM and Plasma to use the same resolution?
Comment 2 terkald 2021-01-12 17:04:36 UTC
I just tested just now with five tries. By putting the desktop at the same resolution as sddm, no plasmoid changes place.
Comment 3 Nate Graham 2021-01-12 22:23:23 UTC
Thanks.

We do support changing the resolution to differ from that of SDDM, so that configuration ought to work properly.

Might be fixed automatically if we fix Bug 360478, but I'm not positive about that.
Comment 4 Xander 2021-02-06 00:21:36 UTC
(In reply to Nate Graham from comment #3)
> Thanks.
> 
> We do support changing the resolution to differ from that of SDDM, so that
> configuration ought to work properly.
> 
> Might be fixed automatically if we fix Bug 360478, but I'm not positive
> about that.

No, i can confirm that this bug still. I am using Arch Linux and with SDDM + Plasma same resolution, widgets still move (and the icons) after reboot, and not save the resize, widgets returns original size and messy icons :(

I don't know what can be but is very annoying
Comment 5 Nate Graham 2021-02-07 16:29:14 UTC
It's not exactly the same as Bug 360478, sut I strongly suspect that once the requested feature in Bug 360478 is implemented, it will fix this.
Comment 6 Xander 2021-02-07 16:34:07 UTC
(In reply to Nate Graham from comment #5)
> It's not exactly the same as Bug 360478, sut I strongly suspect that once
> the requested feature in Bug 360478 is implemented, it will fix this.

Thank you Nathan :)

I hope this fix soon,it is very annoying that something so basic gives these problems.
Comment 7 Bug Janitor Service 2023-01-25 14:27:54 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2535
Comment 8 Marco Martin 2023-01-25 16:09:15 UTC
Git commit 39dd7bc3b75df58eb2d569df4f89cbe65f1113b6 by Marco Martin.
Committed on 25/01/2023 at 16:07.
Pushed by mart into branch 'master'.

fix problems in plasmoid layout restore

The layout manager has a functionality that when the layout is resized,
it tries to move all plasmoids to keep roughtly the same proportional
distance they had before the resize happened, to make screen resolution
change the least "suprising" possible.

We actually need this in only one case:
The screen resoltion changed and there is not a saved plasmoid layout
for this resolution.

What was actually happening was that this heuristic was executed *only*
when the layout was resized due to panels being added/resized (and not
when it should have been).
When a panel gets added/resized we want the plasmoids layoput to change
*as little as possible* again, to not make surprises.
As a side effect , it casued a pretty serious bug:
plasmoids near to the vertical center of the screen migrated upwards of
few pixels at every plasma restart, because ever time it starts without
a panel which appears only later, causing that heuristic to execute and
break havoc.
Now the heuristic is executed only when the screen resolution changes,
which will cause a "config key change" event.
Execute this also when the containment migrates to a new screen, and as
soon this heuristic got executed, save the layout on the new key.
Related: bug 442919, bug 437538, bug 453141

M  +7    -2    components/containmentlayoutmanager/abstractlayoutmanager.h
M  +14   -4    components/containmentlayoutmanager/appletslayout.cpp
M  +9    -2    components/containmentlayoutmanager/gridlayoutmanager.cpp
M  +1    -1    components/containmentlayoutmanager/gridlayoutmanager.h

https://invent.kde.org/plasma/plasma-workspace/commit/39dd7bc3b75df58eb2d569df4f89cbe65f1113b6
Comment 9 Marco Martin 2023-01-25 16:23:43 UTC
Git commit c7fe9fc0d271a145c9025994673599fb51872446 by Marco Martin.
Committed on 25/01/2023 at 16:23.
Pushed by mart into branch 'Plasma/5.27'.

fix problems in plasmoid layout restore

The layout manager has a functionality that when the layout is resized,
it tries to move all plasmoids to keep roughtly the same proportional
distance they had before the resize happened, to make screen resolution
change the least "suprising" possible.

We actually need this in only one case:
The screen resoltion changed and there is not a saved plasmoid layout
for this resolution.

What was actually happening was that this heuristic was executed *only*
when the layout was resized due to panels being added/resized (and not
when it should have been).
When a panel gets added/resized we want the plasmoids layoput to change
*as little as possible* again, to not make surprises.
As a side effect , it casued a pretty serious bug:
plasmoids near to the vertical center of the screen migrated upwards of
few pixels at every plasma restart, because ever time it starts without
a panel which appears only later, causing that heuristic to execute and
break havoc.
Now the heuristic is executed only when the screen resolution changes,
which will cause a "config key change" event.
Execute this also when the containment migrates to a new screen, and as
soon this heuristic got executed, save the layout on the new key.
Related: bug 442919, bug 437538, bug 453141

M  +7    -2    components/containmentlayoutmanager/abstractlayoutmanager.h
M  +14   -4    components/containmentlayoutmanager/appletslayout.cpp
M  +9    -2    components/containmentlayoutmanager/gridlayoutmanager.cpp
M  +1    -1    components/containmentlayoutmanager/gridlayoutmanager.h

https://invent.kde.org/plasma/plasma-workspace/commit/c7fe9fc0d271a145c9025994673599fb51872446