WidgetGetWidth

Syntax

Width.d = WidgetGetWidth(Widget, ReturnLayoutDefined=#False)

Description

Retrieves the current actual rendered width of the specified widget in device-independent pixels (DIPs). Optionally, it can return the ideal width defined in the layout.

Parameters

Widget
The handle of the ProGUI widget whose width is to be retrieved.

ReturnLayoutDefined (optional)
If set to #True, the function returns the ideal width set for the widget in the layout (using WidgetSetWidth() or CreateWidget()), potentially returning #PG_Widget_FitContent (-1) if that was set. If #False (default), returns the actual calculated width after layout adjustments.

Return Value

Returns the requested widget width as a floating-point number (Double) in DIPs. Returns 0.0 or #False if the widget handle is invalid. If ReturnLayoutDefined is #True, it might return #PG_Widget_FitContent (-1).

Remarks

The actual rendered width (`ReturnLayoutDefined = #False`) can differ from the ideal width due to layout constraints (e.g., Flexbox stretching/shrinking, Grid column sizing). Getting the layout-defined width is useful for checking the intended size versus the rendered size.

Example

IncludeFile "ProGUI_PB.pbi"

StartProGUI()

MyWindow = CreateWindow(0, 0, 400, 200, "Widget Width Example")
RootLayout = WindowGetLayout(MyWindow)
LayoutSetType(RootLayout, #PG_Layout_Type_Flex) ; Use Flex layout
LayoutSetPadding(RootLayout, 10)

If MyWindow
  ; Widget with a fixed ideal width
  Widget1 = CreateWidget(0, 0, 150, 50)
  WidgetSetClass(Widget1, "widget1")
  WidgetSetMargin(Widget1, 5)

  ; Widget ideal width set to 200
  Widget2 = CreateWidget(0, 0, 200, 50)
  WidgetSetMinWidth(Widget2, 50) ; Give it a minimum width
  WidgetSetClass(Widget2, "widget2")
  WidgetSetMargin(Widget2, 5)

  WindowShow(MyWindow, #True, #PG_Window_ScreenCentered)

  ; Get widths after layout calculation
  Width1_Actual.d = WidgetGetWidth(Widget1)
  Width1_Ideal.d = WidgetGetWidth(Widget1, #True)
  Width2_Actual.d = WidgetGetWidth(Widget2)
  Width2_Ideal.d = WidgetGetWidth(Widget2, #True) ; Will be -1 (#PG_Widget_FitContent)

  Debug "Widget 1 - Ideal Width: " + StrD(Width1_Ideal) + ", Actual Width: " + StrD(Width1_Actual)
  Debug "Widget 2 - Ideal Width: " + StrD(Width2_Ideal) + ", Actual Width: " + StrD(Width2_Actual)

  Repeat
    Event = WaitWindowEvent()
    Width2_Actual.d = WidgetGetWidth(Widget2)
    Width2_Ideal.d = WidgetGetWidth(Widget2, #True) ; Will be -1 (#PG_Widget_FitContent)
    Debug "Widget 2 - Ideal Width: " + StrD(Width2_Ideal) + ", Actual Width: " + StrD(Width2_Actual)
  Until Event = #PB_Event_CloseWindow
EndIf

StopProGUI()

See Also

WidgetSetWidth, WidgetGetHeight, WidgetGetX, WidgetGetY, WidgetSetMinWidth

Supported OS

Windows, Linux