@@ -1170,6 +1170,42 @@ def test_process_event_text_right_actually_move(self, _init_pygame: None,
1170
1170
'mod' : 0 }))
1171
1171
1172
1172
assert processed_key_event
1173
+ assert text_entry .edit_position == 3
1174
+
1175
+ text_entry .edit_position = 1
1176
+ text_entry .focus ()
1177
+
1178
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1179
+ {'key' : pygame .K_RIGHT ,
1180
+ 'mod' : pygame .KMOD_SHIFT }))
1181
+
1182
+ assert processed_key_event
1183
+ assert text_entry .select_range == [1 , 2 ]
1184
+ assert text_entry .edit_position == 2
1185
+
1186
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1187
+ {'key' : pygame .K_RIGHT ,
1188
+ 'mod' : pygame .KMOD_SHIFT }))
1189
+
1190
+ assert processed_key_event
1191
+ assert text_entry .select_range == [1 , 3 ]
1192
+ assert text_entry .edit_position == 3
1193
+
1194
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1195
+ {'key' : pygame .K_LEFT ,
1196
+ 'mod' : pygame .KMOD_SHIFT }))
1197
+
1198
+ assert processed_key_event
1199
+ assert text_entry .select_range == [1 , 2 ]
1200
+ assert text_entry .edit_position == 2
1201
+
1202
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1203
+ {'key' : pygame .K_RIGHT ,
1204
+ 'mod' : 0 }))
1205
+
1206
+ assert processed_key_event
1207
+ assert text_entry .select_range == [0 , 0 ]
1208
+ assert text_entry .edit_position == 2
1173
1209
1174
1210
text_entry .edit_position = 0
1175
1211
text_entry .focus ()
@@ -1181,6 +1217,17 @@ def test_process_event_text_right_actually_move(self, _init_pygame: None,
1181
1217
assert processed_key_event
1182
1218
assert text_entry .edit_position == 3
1183
1219
1220
+ text_entry .edit_position = 0
1221
+ text_entry .focus ()
1222
+
1223
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1224
+ {'key' : pygame .K_RIGHT ,
1225
+ 'mod' : pygame .KMOD_CTRL | pygame .KMOD_SHIFT }))
1226
+
1227
+ assert processed_key_event
1228
+ assert text_entry .select_range == [0 , 3 ]
1229
+ assert text_entry .edit_position == 3
1230
+
1184
1231
def test_process_event_text_left (self , _init_pygame : None , default_ui_manager : UIManager ,
1185
1232
_display_surface_return_none : None ):
1186
1233
text_entry = UITextEntryBox (relative_rect = pygame .Rect (100 , 100 , 200 , 30 ),
@@ -1197,13 +1244,114 @@ def test_process_event_text_left(self, _init_pygame: None, default_ui_manager: U
1197
1244
assert processed_key_event
1198
1245
assert text_entry .edit_position == 2
1199
1246
1247
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1248
+ {'key' : pygame .K_LEFT ,
1249
+ 'mod' : pygame .KMOD_SHIFT }))
1250
+
1251
+ assert processed_key_event
1252
+ assert text_entry .select_range == [1 , 2 ]
1253
+ assert text_entry .edit_position == 1
1254
+
1255
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1256
+ {'key' : pygame .K_LEFT ,
1257
+ 'mod' : pygame .KMOD_SHIFT }))
1258
+
1259
+ assert processed_key_event
1260
+ assert text_entry .select_range == [0 , 2 ]
1261
+ assert text_entry .edit_position == 0
1262
+
1263
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1264
+ {'key' : pygame .K_RIGHT ,
1265
+ 'mod' : pygame .KMOD_SHIFT }))
1266
+
1267
+ assert processed_key_event
1268
+ assert text_entry .select_range == [1 , 2 ]
1269
+ assert text_entry .edit_position == 1
1270
+
1271
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1272
+ {'key' : pygame .K_LEFT ,
1273
+ 'mod' : 0 }))
1274
+
1275
+ assert processed_key_event
1276
+ assert text_entry .select_range == [0 , 0 ]
1277
+ assert text_entry .edit_position == 1
1278
+
1200
1279
processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1201
1280
{'key' : pygame .K_LEFT ,
1202
1281
'mod' : pygame .KMOD_CTRL }))
1203
1282
1204
1283
assert processed_key_event
1205
1284
assert text_entry .edit_position == 0
1206
1285
1286
+ text_entry .edit_position = 3
1287
+ text_entry .focus ()
1288
+
1289
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1290
+ {'key' : pygame .K_LEFT ,
1291
+ 'mod' : pygame .KMOD_CTRL | pygame .KMOD_SHIFT }))
1292
+
1293
+ assert processed_key_event
1294
+ assert text_entry .select_range == [0 , 3 ]
1295
+ assert text_entry .edit_position == 0
1296
+
1297
+ def test_process_event_text_down (self , _init_pygame : None , default_ui_manager : UIManager ,
1298
+ _display_surface_return_none : None ):
1299
+ text_entry = UITextEntryBox (relative_rect = pygame .Rect (100 , 100 , 200 , 30 ),
1300
+ manager = default_ui_manager )
1301
+
1302
+ text_entry .set_text ('daniel\n multi-line\n text' )
1303
+ text_entry .edit_position = 3
1304
+ text_entry .focus ()
1305
+ text_entry .update (0.1 )
1306
+
1307
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1308
+ {'key' : pygame .K_DOWN ,
1309
+ 'mod' : 0 }))
1310
+
1311
+ assert processed_key_event
1312
+ assert text_entry .edit_position == 10
1313
+
1314
+ text_entry .edit_position = 3
1315
+ text_entry .focus ()
1316
+ text_entry .update (0.1 )
1317
+
1318
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1319
+ {'key' : pygame .K_DOWN ,
1320
+ 'mod' : pygame .KMOD_SHIFT }))
1321
+
1322
+ assert processed_key_event
1323
+ assert text_entry .select_range == [3 , 10 ]
1324
+ assert text_entry .edit_position == 10
1325
+
1326
+ def test_process_event_text_up (self , _init_pygame : None , default_ui_manager : UIManager ,
1327
+ _display_surface_return_none : None ):
1328
+ text_entry = UITextEntryBox (relative_rect = pygame .Rect (100 , 100 , 200 , 30 ),
1329
+ manager = default_ui_manager )
1330
+
1331
+ text_entry .set_text ('daniel\n multi-line\n text' )
1332
+ text_entry .edit_position = 10
1333
+ text_entry .focus ()
1334
+ text_entry .update (0.1 )
1335
+
1336
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1337
+ {'key' : pygame .K_UP ,
1338
+ 'mod' : 0 }))
1339
+
1340
+ assert processed_key_event
1341
+ assert text_entry .edit_position == 3
1342
+
1343
+ text_entry .edit_position = 10
1344
+ text_entry .focus ()
1345
+ text_entry .update (0.1 )
1346
+
1347
+ processed_key_event = text_entry .process_event (pygame .event .Event (pygame .KEYDOWN ,
1348
+ {'key' : pygame .K_UP ,
1349
+ 'mod' : pygame .KMOD_SHIFT }))
1350
+
1351
+ assert processed_key_event
1352
+ assert text_entry .select_range == [3 , 10 ]
1353
+ assert text_entry .edit_position == 3
1354
+
1207
1355
def test_process_event_home (self , _init_pygame : None , default_ui_manager : UIManager ,
1208
1356
_display_surface_return_none : None ):
1209
1357
text_entry = UITextEntryBox (relative_rect = pygame .Rect (100 , 100 , 200 , 30 ),
0 commit comments