rkflx created this revision. rkflx added a reviewer: Frameworks. Restricted Application added a project: Frameworks. rkflx requested review of this revision.
REVISION SUMMARY cc00bbb22010 <https://phabricator.kde.org/R446:cc00bbb22010af94a2eb95d12201fbeceec17681> tried to prevent the places panel from reopening with a width reduced by 1px compared to the previous invocation of the file dialog. While the patch worked on the surface when it was applied, the actual reasoning was wrong: The difference was not because of "extra resize() events", but because of a mismatch between what was read from the config (`placesViewWidth`) and what was written to the config (`sizes[0]`). The actual reason `placesViewWidth` and `sizes[0]` are different is because of a previous error: It is assumed that the splitter sizes sum up to `availableWidth`, while in reality this width also contains the width of the splitter handle. Upon `setSizes`, Qt equally takes away width from both sides of the splitter to make everything fit. While for the Oxygen and Fusion styles (3px and 4px splitter handle width, respectively) an adjustment of 1px did the trick, for Breeze with its splitter handle width of only 1px this did not work anymore due to rounding errors, it resulted in the config entry incrementing by 1px for every invocation of the dialog. To fix the problem for every style, we simply take the width of the splitter handle into account and revert the previous fix. While we are at it, we refactor to make everything more DRY. Ref T8552 <https://phabricator.kde.org/T8552> FIXED-IN: 5.46 TEST PLAN Setup monitoring with `watch grep Speedbar ~/.config/kdeglobals`. Repeatedly open `kdialog --getopenfilename`, click on Cancel and check that the config entry does not change. Test for multiple widget styles (e.g. Breeze, Oxygen, Windows and Fusion), as well as for hiding the places panel and manually moving the splitter to both ends. REPOSITORY R241 KIO BRANCH fix-places-width-growth (branched from master) REVISION DETAIL https://phabricator.kde.org/D12592 AFFECTED FILES src/filewidgets/kfilewidget.cpp To: rkflx, #frameworks Cc: michaelh, bruns