
Peter Scott <sketerpot@gmail.com> writes:
When I open Clouseau and expand what I'm inspecting so that it goes off the screen, I see gray regions if I scroll to the right or down. Here's a screenshot:
You all were on the wrong track ... First off, the pane hierarchy in the Clouseau application is a little strange: The stream pane is inside a border pane inside a vrack pane inside a viewport inside the scroller pane. You would get a saner hierarchy by saying :scroll-bars t in the definition of the 'app' pane and skip the scrolling in the layout. Anyhow, still there is a bug. After looking into it, I saw that space requirements are fine. The space requirements of the stream are properly distributed up to the scroller pane, which you can also see in the correct min/max/thumb-size values of the scroll bar. I looked at the sheet regions and transformations and they all looked perfectly fine. Then I investigated actual sheet geometry as the X server believes. And there is our bug: The X server disagrees with CLIM! So the defect is in the coordinate swizzling code of mine. The documentation string of UPDATE-MIRROR-GEOMETRY, which is the function responsible for synchronizing the sheet geometry to the X server, states: | [...] This function is supposed to be called whenever one of the | following happens: | | [...] | - the parent's native transformation changed | - the parent's transformation changed | - the parent's mirror region changed And exactly these are the cases, we miss. Doing (defmethod note-sheet-transformation-changed ((sheet mirrored-sheet-mixin)) (update-mirror-geometry sheet) + (mapc #'update-mirror-geometry (sheet-children sheet))) seems to help. For completeness we also should do: (defmethod note-sheet-region-changed ((sheet mirrored-sheet-mixin)) (update-mirror-geometry sheet) (mapc #'update-mirror-geometry (sheet-children sheet)) ) This should be regarded as a temporary fix, since IMHO UPDATE-MIRROR-GEOMETRY itself should decide when to update the native region or transformation of a child of a sheet. -- Gilbert Baumann