dragResizeSplit method

TilingPaneManager dragResizeSplit({
  1. required String splitId,
  2. required int delta,
  3. required int width,
  4. required int height,
})

Adjusts a split ratio by pointer drag while respecting min sizes.

Implementation

TilingPaneManager dragResizeSplit({
  required String splitId,
  required int delta,
  required int width,
  required int height,
}) {
  if (delta == 0) return this;
  final current = layout(width: width, height: height);
  final handle = current.splits[splitId];
  if (handle == null) return this;
  final mainLength = switch (handle.direction) {
    PaneSplitDirection.vertical => handle.height,
    PaneSplitDirection.horizontal => handle.width,
  };
  if (mainLength <= 0) return this;

  final updated = _applyResize(root, splitId, delta / mainLength);
  if (updated == root) return this;
  return TilingPaneManager._(
    root: updated,
    focusedPaneId: focusedPaneId,
    paneMinWidth: paneMinWidth,
    paneMinHeight: paneMinHeight,
    snapThreshold: snapThreshold,
  );
}