handle method

void handle(
  1. dynamic event,
  2. FluentDocument document
)

Implementation

void handle(dynamic event, FluentDocument document) {
  if (event is KeyEvent) {
    if (event is KeyDownEvent) {
      updateModifiers(event);
    }
    if (event is KeyUpEvent) {
      updateModifiers(event);
      if (_arrowRepeater.isActive && _arrowRepeater.isArrowKey(event.logicalKey)) {
        _arrowRepeater.stop();
      }
    }
    if (event is KeyRepeatEvent) {
      updateModifiers(event);
      // On Linux, arrow key native autorepeat is ignored: repetition is
      // driven manually by ArrowKeyRepeater instead, to work around
      // missing repaint during OS-level key autorepeat.
      if (_arrowRepeater.isActive && _arrowRepeater.isArrowKey(event.logicalKey)) {
        return;
      }
    }
    if (event is KeyDownEvent || event is KeyRepeatEvent) {
      handleKeyDown(event, document);
    }
    if (event is KeyDownEvent &&
        _arrowRepeater.isActive &&
        _arrowRepeater.isArrowKey(event.logicalKey)) {
      this.document = document;
      _arrowRepeater.start(event, fast: isShiftPressed);
    }
  }
}