ee8b2bebce
On mixed-DPI multi-monitor setups, dialog sizes grow each time they are reopened because logical pixel values change when a window moves between monitors with different scaling factors. The std::max comparison during restore guarantees monotonic growth since the DPI-scaled value always exceeds the previously saved unscaled value. Store width and height as DIP (device-independent pixels) using ToDIP() on save and FromDIP() on restore. This makes the persisted size stable regardless of which monitor the dialog was on when closed. A "dip" flag in the JSON differentiates new DIP-format values from legacy logical pixel values, which are converted in place on first load. Fixes https://gitlab.com/kicad/code/kicad/-/issues/20120