' ***** Resize *****
vv2 = v2
vv3 = v3
GOSUB GetSmallestSize ' returns bw and heights
v2 = MAX (vv2, v2)
v3 = MAX (vv3, v3)
XuiPositionGrid (grid, @v0, @v1, @v2, @v3)
h = labelHeight + buttonHeight + textHeight + bw + bw
IF (v3 >= h + 4) THEN
buttonHeight = buttonHeight + 4 : h = h + 4
IF (v3 >= h + 4) THEN textHeight = textHeight + 4
labelWidth = v2 - bw - bw
labelHeight = v3 - buttonHeight - textHeight - bw - bw
buttonWidth = labelWidth >> 1
w0 = buttonWidth
w1 = labelWidth - w0
x = v0 + bw
y = v1 + bw
w = labelWidth
XuiSendMessage (grid, #Resize, x, y, w, labelHeight, $Label, 0)
y = y + labelHeight
XuiSendMessage (grid, #Resize, x, y, w, textHeight, $TextLine, 0)
h = buttonHeight
y = y + textHeight
XuiSendMessage (grid, #Resize, x, y, w0, h, $Button0, 0) : x = x + w0
XuiSendMessage (grid, #Resize, x, y, w1, h, $Button1, 0) : x = x + w1
XuiResizeWindowToGrid (grid, #ResizeWindowToGrid, v0, v1, v2, v3, 0, 0)
The Resize subroutine is supposed to change the x,y,width,height position and size of the XuiDialog2B grid to v0,v1,v2,v3 .
Resize first it calls its own GetSmallestSize subroutine to see if the requested width,height is smaller than the grid can resize. XuiPositionGrid() sets the position and size of the XuiDialog2B grid in window coordinates.
Taking advantage of several variables that GetSmallestSize already computed, the Resize subroutine computes the width and height of all the kid grids, and sends a #Resize message to each kid to set its position and size.
Finally, Resize calls ResizeWindowToGrid() function, which resizes the window to the XuiDialog2B grid if the XuiDialog2B grid was created by a CreateWindow message. In other words, ResizeWindowToGrid() resizes the window only if the grid is supposed to fill the grid.