setFocus method

Future<void> setFocus(
  1. FocusedEntity entity, {
  2. FocusRestoreMode focusRestoreMode = FocusRestoreMode.mainWindow,
})

Set which entity has keyboard focus.

When entity is HostFocused, focusRestoreMode controls what happens:

Implementation

Future<void> setFocus(
  FocusedEntity entity, {
  FocusRestoreMode focusRestoreMode = FocusRestoreMode.mainWindow,
}) async {
  if (_focusedEntity == entity) return;

  _focusedEntity = entity;
  if (!_focusController.isClosed) {
    _focusController.add(entity);
  }

  // Update native focus
  switch (entity) {
    case HostFocused():
      // Unfocus all palettes
      for (final palette in _visiblePalettes.values) {
        await _focusClient.unfocus(palette.id);
      }
      // Restore focus based on mode
      await _focusClient.restoreFocus(focusRestoreMode);
    case PaletteFocused(:final paletteId):
      // Focus the specific palette
      await _focusClient.focus(paletteId);
  }
}