Skip to content

Commit 2dccde7

Browse files
committed
Fix bugs that exceed boundaries when selecting text. (Issue: #88)
1 parent 6ed2944 commit 2dccde7

File tree

4 files changed

+185
-154
lines changed

4 files changed

+185
-154
lines changed

example/pubspec.lock

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,77 +5,77 @@ packages:
55
dependency: transitive
66
description:
77
name: args
8-
url: "https://pub.dartlang.org"
8+
url: "https://pub.flutter-io.cn"
99
source: hosted
1010
version: "2.3.0"
1111
asn1lib:
1212
dependency: transitive
1313
description:
1414
name: asn1lib
15-
url: "https://pub.dartlang.org"
15+
url: "https://pub.flutter-io.cn"
1616
source: hosted
17-
version: "1.0.3"
17+
version: "1.1.0"
1818
async:
1919
dependency: transitive
2020
description:
2121
name: async
22-
url: "https://pub.dartlang.org"
22+
url: "https://pub.flutter-io.cn"
2323
source: hosted
2424
version: "2.8.2"
2525
boolean_selector:
2626
dependency: transitive
2727
description:
2828
name: boolean_selector
29-
url: "https://pub.dartlang.org"
29+
url: "https://pub.flutter-io.cn"
3030
source: hosted
3131
version: "2.1.0"
3232
characters:
3333
dependency: transitive
3434
description:
3535
name: characters
36-
url: "https://pub.dartlang.org"
36+
url: "https://pub.flutter-io.cn"
3737
source: hosted
3838
version: "1.2.0"
3939
charcode:
4040
dependency: transitive
4141
description:
4242
name: charcode
43-
url: "https://pub.dartlang.org"
43+
url: "https://pub.flutter-io.cn"
4444
source: hosted
4545
version: "1.3.1"
4646
clock:
4747
dependency: transitive
4848
description:
4949
name: clock
50-
url: "https://pub.dartlang.org"
50+
url: "https://pub.flutter-io.cn"
5151
source: hosted
5252
version: "1.1.0"
5353
collection:
5454
dependency: transitive
5555
description:
5656
name: collection
57-
url: "https://pub.dartlang.org"
57+
url: "https://pub.flutter-io.cn"
5858
source: hosted
5959
version: "1.15.0"
6060
convert:
6161
dependency: transitive
6262
description:
6363
name: convert
64-
url: "https://pub.dartlang.org"
64+
url: "https://pub.flutter-io.cn"
6565
source: hosted
66-
version: "3.0.0"
66+
version: "3.0.1"
6767
cupertino_icons:
6868
dependency: "direct main"
6969
description:
7070
name: cupertino_icons
71-
url: "https://pub.dartlang.org"
71+
url: "https://pub.flutter-io.cn"
7272
source: hosted
7373
version: "0.1.3"
7474
dart_console:
7575
dependency: transitive
7676
description:
7777
name: dart_console
78-
url: "https://pub.dartlang.org"
78+
url: "https://pub.flutter-io.cn"
7979
source: hosted
8080
version: "1.0.0"
8181
dartssh2:
@@ -91,21 +91,21 @@ packages:
9191
dependency: transitive
9292
description:
9393
name: equatable
94-
url: "https://pub.dartlang.org"
94+
url: "https://pub.flutter-io.cn"
9595
source: hosted
9696
version: "2.0.3"
9797
fake_async:
9898
dependency: transitive
9999
description:
100100
name: fake_async
101-
url: "https://pub.dartlang.org"
101+
url: "https://pub.flutter-io.cn"
102102
source: hosted
103103
version: "1.2.0"
104104
ffi:
105105
dependency: transitive
106106
description:
107107
name: ffi
108-
url: "https://pub.dartlang.org"
108+
url: "https://pub.flutter-io.cn"
109109
source: hosted
110110
version: "1.1.2"
111111
flutter:
@@ -122,79 +122,79 @@ packages:
122122
dependency: transitive
123123
description:
124124
name: http
125-
url: "https://pub.dartlang.org"
125+
url: "https://pub.flutter-io.cn"
126126
source: hosted
127127
version: "0.13.4"
128128
http_parser:
129129
dependency: transitive
130130
description:
131131
name: http_parser
132-
url: "https://pub.dartlang.org"
132+
url: "https://pub.flutter-io.cn"
133133
source: hosted
134134
version: "4.0.0"
135135
js:
136136
dependency: transitive
137137
description:
138138
name: js
139-
url: "https://pub.dartlang.org"
139+
url: "https://pub.flutter-io.cn"
140140
source: hosted
141-
version: "0.6.3"
141+
version: "0.6.4"
142142
matcher:
143143
dependency: transitive
144144
description:
145145
name: matcher
146-
url: "https://pub.dartlang.org"
146+
url: "https://pub.flutter-io.cn"
147147
source: hosted
148148
version: "0.12.11"
149149
material_color_utilities:
150150
dependency: transitive
151151
description:
152152
name: material_color_utilities
153-
url: "https://pub.dartlang.org"
153+
url: "https://pub.flutter-io.cn"
154154
source: hosted
155-
version: "0.1.2"
155+
version: "0.1.3"
156156
meta:
157157
dependency: transitive
158158
description:
159159
name: meta
160-
url: "https://pub.dartlang.org"
160+
url: "https://pub.flutter-io.cn"
161161
source: hosted
162162
version: "1.7.0"
163163
path:
164164
dependency: transitive
165165
description:
166166
name: path
167-
url: "https://pub.dartlang.org"
167+
url: "https://pub.flutter-io.cn"
168168
source: hosted
169169
version: "1.8.0"
170170
pinenacl:
171171
dependency: transitive
172172
description:
173173
name: pinenacl
174-
url: "https://pub.dartlang.org"
174+
url: "https://pub.flutter-io.cn"
175175
source: hosted
176176
version: "0.3.3"
177177
platform_info:
178178
dependency: transitive
179179
description:
180180
name: platform_info
181-
url: "https://pub.dartlang.org"
181+
url: "https://pub.flutter-io.cn"
182182
source: hosted
183-
version: "3.0.0-nullsafety.1"
183+
version: "3.1.0"
184184
pointycastle:
185185
dependency: transitive
186186
description:
187187
name: pointycastle
188-
url: "https://pub.dartlang.org"
188+
url: "https://pub.flutter-io.cn"
189189
source: hosted
190-
version: "3.4.0"
190+
version: "3.5.1"
191191
quiver:
192192
dependency: transitive
193193
description:
194194
name: quiver
195-
url: "https://pub.dartlang.org"
195+
url: "https://pub.flutter-io.cn"
196196
source: hosted
197-
version: "3.0.0"
197+
version: "3.0.1+1"
198198
sky_engine:
199199
dependency: transitive
200200
description: flutter
@@ -204,79 +204,79 @@ packages:
204204
dependency: transitive
205205
description:
206206
name: source_span
207-
url: "https://pub.dartlang.org"
207+
url: "https://pub.flutter-io.cn"
208208
source: hosted
209209
version: "1.8.1"
210210
stack_trace:
211211
dependency: transitive
212212
description:
213213
name: stack_trace
214-
url: "https://pub.dartlang.org"
214+
url: "https://pub.flutter-io.cn"
215215
source: hosted
216216
version: "1.10.0"
217217
stream_channel:
218218
dependency: transitive
219219
description:
220220
name: stream_channel
221-
url: "https://pub.dartlang.org"
221+
url: "https://pub.flutter-io.cn"
222222
source: hosted
223223
version: "2.1.0"
224224
string_scanner:
225225
dependency: transitive
226226
description:
227227
name: string_scanner
228-
url: "https://pub.dartlang.org"
228+
url: "https://pub.flutter-io.cn"
229229
source: hosted
230230
version: "1.1.0"
231231
term_glyph:
232232
dependency: transitive
233233
description:
234234
name: term_glyph
235-
url: "https://pub.dartlang.org"
235+
url: "https://pub.flutter-io.cn"
236236
source: hosted
237237
version: "1.2.0"
238238
test_api:
239239
dependency: transitive
240240
description:
241241
name: test_api
242-
url: "https://pub.dartlang.org"
242+
url: "https://pub.flutter-io.cn"
243243
source: hosted
244244
version: "0.4.8"
245245
typed_data:
246246
dependency: transitive
247247
description:
248248
name: typed_data
249-
url: "https://pub.dartlang.org"
249+
url: "https://pub.flutter-io.cn"
250250
source: hosted
251251
version: "1.3.0"
252252
validators:
253253
dependency: transitive
254254
description:
255255
name: validators
256-
url: "https://pub.dartlang.org"
256+
url: "https://pub.flutter-io.cn"
257257
source: hosted
258258
version: "3.0.0"
259259
vector_math:
260260
dependency: transitive
261261
description:
262262
name: vector_math
263-
url: "https://pub.dartlang.org"
263+
url: "https://pub.flutter-io.cn"
264264
source: hosted
265265
version: "2.1.1"
266266
win32:
267267
dependency: transitive
268268
description:
269269
name: win32
270-
url: "https://pub.dartlang.org"
270+
url: "https://pub.flutter-io.cn"
271271
source: hosted
272-
version: "2.3.3"
272+
version: "2.4.1"
273273
xterm:
274274
dependency: "direct main"
275275
description:
276276
path: ".."
277277
relative: true
278278
source: path
279-
version: "2.5.0-pre"
279+
version: "2.6.0"
280280
sdks:
281-
dart: ">=2.14.0 <3.0.0"
281+
dart: ">=2.16.0-100.0.dev <3.0.0"
282282
flutter: ">=2.0.0"

lib/terminal/terminal.dart

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -558,25 +558,23 @@ class Terminal
558558
}
559559

560560
final builder = StringBuffer();
561+
final yStart = max(_selection.start!.y, 0);
562+
final yEnd = min(_selection.end!.y, buffer.height);
561563

562-
for (var row = _selection.start!.y; row <= _selection.end!.y; row++) {
563-
if (row >= buffer.height) {
564-
break;
565-
}
566-
564+
for (var row = yStart; row < yEnd; row++) {
567565
final line = buffer.lines[row];
568566

569567
var xStart = 0;
570568
var xEnd = viewWidth - 1;
571569

572-
if (row == _selection.start!.y) {
573-
xStart = _selection.start!.x;
570+
if (row == yStart) {
571+
xStart = max(_selection.start!.x, 0);
574572
} else if (!line.isWrapped) {
575573
builder.write("\n");
576574
}
577575

578-
if (row == _selection.end!.y) {
579-
xEnd = _selection.end!.x;
576+
if (row == yEnd) {
577+
xEnd = min(_selection.end!.x, terminalWidth);
580578
}
581579

582580
for (var col = xStart; col <= xEnd; col++) {

0 commit comments

Comments
 (0)