View Issue Details

IDProjectCategoryView StatusLast Update
0022588MMW 5Main Panelpublic2026-11-10 20:12
ReporterLudek Assigned To 
PriorityurgentSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version2027.0 
Target Version2027.0Fixed in Version2027.0 
Summary0022588: Issues with docking / splitters
DescriptionAs found by user from [ticket # 18995] :


MediaMonkey's docking system automatically inserts native Splitter controls between multiple panels in the same dock, even when the dock is not a flex container.
This can cause incorrect panel resizing because the Splitter assumes a horizontal layout when its parent does not have the CSS class column.
For example, a Top or Bottom dock using display: block may contain vertically stacked panels, but the Splitter is still initialized as horizontal.

Expected behavior:
The docking system should only create Splitters when the parent layout supports them, and the Splitter orientation should match the actual layout.

Vertically stacked panels should not have their widths modified by a horizontal Splitter.

Technical findings:
In helpers/docking.js, a Splitter is inserted whenever the dock contains more than one panel, without checking the parent's layout type.

In controls/splitter.js, the orientation is determined by:
if (this.parentElement.classList.contains('column')) this.isVertical = true; else this.isVertical = false;

Therefore, any non-flex dock without the column class is treated as a horizontal layout.
The native Splitter documentation also states that Splitters must be placed inside a flex control, but this requirement is not enforced by the docking system.

Possible effects:
Unexpected changes to panel widths.

Panels temporarily shrinking during startup or layout restoration.
Incorrect sizing when switching tabs or changing dock layouts.

Additional note:
The same underlying issue appears to remain in the latest MediaMonkey 2027 beta source files (helpers/docking.js and controls/splitter.js).

Although the newer Splitter implementation includes improvements to size handling, it still creates and initializes horizontal Splitters in non-flex docks.

The issue has been reproduced in MM 2024 and MM 2027 (latest beta)
TagsNo tags attached.
Fixed in build3531

Activities

Ludek

2026-11-10 20:12

developer   ~0083631

Fixed in 3531 :

--> Non-flex docks no longer receive splitters.
--> Splitter orientation follows computed CSS flex-direction.
--> Tab switching removes unsupported or incorrectly oriented splitters.