dolphinsmalltalk / Dolphin

Dolphin Smalltalk Core Image
MIT License
301 stars 58 forks source link

7.2 High DPI: ListTreeView moved to a monitor at lower DPIs scale does not change row height #1292

Closed blairmcg closed 3 months ago

blairmcg commented 3 months ago

When an inspector (which uses the ListTreeView) is moved from higher to smaller scale, the images lists are updated but the row height does not change. This makes the rows too high for the text, and the images are drawn from a list that is too small resulting in corrupt images.

To Reproduce

  1. Open an inspector
  2. Move from a secondary monitor at higher DPI to a primary monitor at lower DPI, e.g. 225% to 125%
  3. Use the inspector context menu to open another inspector on the same object for comparison

Actual

image

Expected

image

Discussion Looks to be some sort of bug in the SysListView32 control, since the image list has been updated and should have caused the view geometry to change. Oddly this does seem to work correctly in normal ListViews, and only goes wrong in the ListTreeView. This may be because the LTV makes use of the state image list to hold the tumblers, whereas in a normal LV the state image list is not set.

blairmcg commented 3 months ago

Fixed by 4b778b202ca5e1d71bc1e5f8334bd51908415d8c