FbWindow
Controls the main foobar2000 application window.
Global state: every JSplitter panel accesses the same native foobar2000 window through fb.Window. Window geometry X, Y, Width, Height, the numeric MinWidth, MinHeight, MaxWidth, MaxHeight, and the numeric pseudo-caption rectangle defined by SetPseudoCaption are global host state. These numeric values are not automatically restored when a panel reloads or unloads.
Window UI settings such as FrameStyle, Fullscreen, MainMenuHidden, StatusBarHidden, MinSize, MaxSize, and pseudo-caption activation are tracked per panel. The most recent explicit assignment made by any live panel becomes the effective global value. When that panel reloads or unloads, its request is removed and the previous request from another live panel, if any, becomes effective again.
If no panel has a request, FrameStyle defaults to FrameStyle.Default, and the boolean settings default to false.
So getters return the effective global value, not the last value assigned by the current panel.
If both minimum and maximum limits are enabled for the same axis, keep the nonzero minimum less than or equal to the nonzero maximum. Contradictory limits are not a supported configuration.
Most methods described here, except for basic window positioning and resizing, are incompatible with plugins that provide similar functionality, such as foo_ui_wizard, foo_openhacks, or foo_ui_hacks. If you intend to use these methods, uninstall such components first. Running them together may cause conflicting behavior and is not a supported configuration.
Examples
fb.Window.MinWidth = 500;
fb.Window.MinHeight = 300;
fb.Window.MinSize = true;
fb.Window.MaxWidth = 1600;
fb.Window.MaxHeight = 1000;
fb.Window.MaxSize = true;
fb.Window.FrameStyle = FrameStyle.NoBorder;// Panel A:
fb.Window.FrameStyle = FrameStyle.NoBorder;
// Panel B, executed later:
fb.Window.FrameStyle = FrameStyle.Default;
// FrameStyle.Default is now effective globally. If Panel B unloads or reloads without this line (e.g. commented),
// Panel A's still-live FrameStyle.NoBorder request becomes effective again.