xterm.dart
xterm.dart copied to clipboard
[BUG] It throws an error when I call the `selectedText` of `Terminal` instance.
It throws RangeError (byteOffset): Index out of range: index must not be negative: -36 when I call the selectedText of Terminal instance.
Step:
- Select a line text in
TerminalViewwidget by mouse manually. (Note that it must be a whole line of text starting at the beginning of the line, not part of a line.) - Call the
terminal.selectedTextgetter.
======== Exception caught by services library ======================================================
The following IndexError was thrown while processing the key message handler:
RangeError (byteOffset): Index out of range: index must not be negative: -36
When the exception was thrown, this was the stack:
#0 _ByteDataView.getUint8 (dart:typed_data-patch/typed_data_patch.dart:4762:7)
#1 ByteDataBufferLineData.cellGetWidth (package:xterm/buffer/line/line_bytedata_data.dart:200:19)
#2 BufferLine.cellGetWidth (package:xterm/buffer/line/line.dart:106:40)
#3 Terminal.getSelectedText (package:xterm/terminal/terminal.dart:587:18)
#4 Terminal.selectedText (package:xterm/terminal/terminal.dart:669:31)
#5 _TerminalBoxState._handleOnKeyEvent (package:api_tester/views/widgets/terminal_box.dart:67:42)
#6 FocusManager._handleKeyMessage (package:flutter/src/widgets/focus_manager.dart:1589:39)
#7 KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:832:37)
#8 BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:77:49)
#9 BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:76:47)
#10 _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:377:35)
#11 _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:374:46)
#12 _invoke2.<anonymous closure> (dart:ui/hooks.dart:190:15)
#16 _invoke2 (dart:ui/hooks.dart:189:10)
#17 _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5)
#18 _Channel.push (dart:ui/channel_buffers.dart:132:31)
#19 ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17)
#20 PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:583:22)
#21 _dispatchPlatformMessage (dart:ui/hooks.dart:89:31)
(elided 3 frames from dart:async)
KeyMessage: KeyMessage([KeyUpEvent#e2512(physicalKey: PhysicalKeyboardKey#700e3(usbHidUsage: "0x000700e3", debugName: "Meta Left"), logicalKey: LogicalKeyboardKey#00106(keyId: "0x200000106", keyLabel: "Meta Left", debugName: "Meta Left"), character: null, timeStamp: 7:11:27.069216)])
====================================================================================================
flutter version: 2.10.0 OS version: macOS 12.1 app build platform: desktop (macOS) xterm plugin version: 2.6.0

Why does it appear -4? Shouldn't the minimum value be 0?
https://user-images.githubusercontent.com/26346560/153832180-4bc0a11b-0b7e-45b4-b8bd-c902768d27aa.mp4