Summary: | DesktopView screen geometry size was strange when kcm_screen rotated 90 degrees then rotated back again | ||
---|---|---|---|
Product: | [Plasma] KScreen | Reporter: | Leslie Zhai <zhaixiang> |
Component: | libkscreen | Assignee: | Daniel Vrátil <dvratil> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | afiestas, jr, notmart, pieterjan.camerlynck, sebas |
Priority: | NOR | ||
Version: | git | ||
Target Milestone: | 1.0 | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/libkscreen/c3cb380aa0835c268a84a4c480854b91ab9a76f2 | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: | 0001-plasmashell-rotate.patch |
Description
Leslie Zhai
2015-12-03 06:25:58 UTC
there are actually 2 panels? nope, there is ONLY ONE panel! I did NOT add another panels. 1. rotated 90 degree at first, the desktopview is correct 2. then rotated back again, the right side is strange, render more than one panels wrongly! (In reply to Marco Martin from comment #1) > there are actually 2 panels? Took photo by mobile phone ;-) https://pbs.twimg.com/media/CVWLgUPUsAA9X1Q.png https://pbs.twimg.com/media/CVWLfOPVAAAyH65.jpg but use xrandr it is ok! xrandr --output LVDS1 --rotate left xrandr --output LVDS1 --rotate normal Created attachment 96169 [details]
0001-plasmashell-rotate.patch
monkey patch set config twice:
1. set config once for rotating left && normal, plasmashell QScreen's geometry was wrong
2. set config twice, the plasmashell could work.
PS: when the geometry was wrong, then changed ResolutionSlider to save config, the plasmashell was correct ;-)
(In reply to Pieterjan Camerlynck from comment #7) > https://git.reviewboard.kde.org/r/127656/ Thanks for your great patch, please ship it ;-) Git commit da2edf3ef61a70eb2fbd7b5e757d605c1f5b000d by Sebastian Kügler. Committed on 19/04/2016 at 11:14. Pushed by sebas into branch 'master'. Verify rotation when updating screen size in XRandR backend When rotating a single screen to portrait and back to landscape, the XRandR screen size is not updated. When for example rotating a display of 1920x1080 portrait, the screen size is changed to 1080x1920. XRandR::screenChanged() however is called with rotation = 90 and size = 1920x1080. So the screen size stored internally remains 1920x1080, instead of being updated to 1080x1920. When you then rotate the screen back to landscape, it checks the new screen size (1920x1080) against the stored (1920x1080) and does not update the screen size (which is at this point 1080x1920). This should solve https://bugs.kde.org/show_bug.cgi?id=356228 which has photos of the incorrect behavior. Patch-by: Pieterjan Camerlynck <pieterjan.camerlynck@gmail.com> Reviewed-by:Leslie Zhai <xiangzhai83@gmail.com> M +6 -2 backends/xrandr/xrandr.cpp http://commits.kde.org/libkscreen/da2edf3ef61a70eb2fbd7b5e757d605c1f5b000d Git commit c3cb380aa0835c268a84a4c480854b91ab9a76f2 by Sebastian Kügler. Committed on 19/04/2016 at 11:18. Pushed by sebas into branch 'Plasma/5.6'. Verify rotation when updating screen size in XRandR backend When rotating a single screen to portrait and back to landscape, the XRandR screen size is not updated. When for example rotating a display of 1920x1080 portrait, the screen size is changed to 1080x1920. XRandR::screenChanged() however is called with rotation = 90 and size = 1920x1080. So the screen size stored internally remains 1920x1080, instead of being updated to 1080x1920. When you then rotate the screen back to landscape, it checks the new screen size (1920x1080) against the stored (1920x1080) and does not update the screen size (which is at this point 1080x1920). This should solve https://bugs.kde.org/show_bug.cgi?id=356228 which has photos of the incorrect behavior. Patch-by: Pieterjan Camerlynck <pieterjan.camerlynck@gmail.com> Reviewed-by:Leslie Zhai <xiangzhai83@gmail.com> M +6 -2 backends/xrandr/xrandr.cpp http://commits.kde.org/libkscreen/c3cb380aa0835c268a84a4c480854b91ab9a76f2 Thanks guys! (In reply to Sebastian Kügler from comment #11) > Thanks guys! You are welcome ;-P |