I had a short time to try things.

Based on your status window code, set wrap-mode and wrap-width (which is pixels not characters).

Testing with status window on the right so the width can be changed with the pane separator sees wrapping happen fine at the set wrap-width or the window width if it is greater than wrap-width. So wrap-width sets the minimum wrap width in pixels, if less space is available it simply hides part of the column like normal.

But row heights are not recalculated, it is calculated when data is first added to the row and left at the height needed for wrap-width since this is big enough to contain the worst case. That is why various examples on the web show massive blank space when wrap-width was set small (like 50 in one example) and so the row height was calculated based on that value but he text wrapped based on the actual widget width.

Your attempt to use the callback to reset wrap-width seemed a good idea, but for me it is never called with signal check-resize (printf debugging :-). Maybe another signal could work better?

Alternatively given the uses it should be enough if we can calculate the right value for wrap-width based on the layout and just leave it since none of the message windows change their existing contents and new lines added (eg in status) get their height based on the wrap-width. This won't change the height if the window is resized after it has content, but that won't matter so much for compiler and messages which are reset regularly, so long as the new wrap-width is used when the new data is added. With this model status probably should be left unwrapped and of course its irrelevant to scribble and terminal.

I have run out of time now, over to you.


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <geany/geany/issues/3834/2053881145@github.com>