setSmartEdgeDocking static method

Future<void> setSmartEdgeDocking({
  1. required bool enabled,
  2. double visibleWidth = 5.0,
})

启用/禁用智能停靠机制

enabled 是否启用智能停靠 visibleWidth 停靠时可见的宽度(默认5像素)

当启用时,用户拖动窗口使其部分超出屏幕边界松开鼠标,会自动触发停靠 系统会智能判断:

  • 如果窗口同时超出两个相邻边界(如左边和上边),则触发角落停靠
  • 如果窗口只超出一个边界,则触发边缘停靠

Implementation

static Future<void> setSmartEdgeDocking({
  required bool enabled,
  double visibleWidth = 5.0,
}) async {
  if (!MyPlatform.isDesktop) return;

  _isSmartDockingEnabled = enabled;
  _smartDockVisibleWidth = visibleWidth;
  _enableCornerDocking = true; // 始终启用角落检测

  if (enabled) {
    // 启用智能停靠时,禁用Windows的自动最大化功能
    await WindowFocusManager.disableWindowsAutoMaximize();
    // 开始监听窗口位置变化
    await _startSmartDockingMonitor();
    // 初始化窗口焦点监听器
    WindowFocusManager.initialize();
  } else {
    // 禁用时,停止监听并恢复窗口
    await _stopSmartDockingMonitor();
    // 清理窗口焦点监听器
    WindowFocusManager.dispose();
    // 恢复Windows的自动最大化功能
    await WindowFocusManager.restoreWindowsAutoMaximize();
  }
}