| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import 'package:xterm/mouse/position.dart';
- class Selection {
- Position _start;
- Position _end;
- var _endFixed = false;
- Position get start => _start;
- Position get end => _end;
- void init(Position position) {
- _start = position;
- _end = position;
- _endFixed = false;
- }
- void update(Position position) {
- if (_start == null) {
- return;
- }
- if (position.isBefore(_start) && !_endFixed) {
- _endFixed = true;
- _end = _start;
- }
- if (position.isAfter(_start) && _endFixed) {
- _endFixed = false;
- _start = _end;
- }
- if (_endFixed) {
- _start = position;
- } else {
- _end = position;
- }
- // print('($_start, $end');
- }
- void clear() {
- _start = null;
- _end = null;
- _endFixed = false;
- }
- bool contains(Position position) {
- if (isEmpty) {
- return false;
- }
- return _start.isBeforeOrSame(position) && _end.isAfterOrSame(position);
- }
- bool get isEmpty {
- return _start == null || _end == null;
- }
- }
|