MCPcopy Create free account
hub / github.com/ClassiCube/ClassiCube / InputWidget_BackspaceKey

Function InputWidget_BackspaceKey

src/Widgets.c:1296–1322  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1294}
1295
1296static void InputWidget_BackspaceKey(struct InputWidget* w) {
1297 int i, len;
1298
1299 if (Input_IsActionPressed()) {
1300 if (w->caretPos == -1) { w->caretPos = w->text.length - 1; }
1301 len = WordWrap_GetBackLength(&w->text, w->caretPos);
1302 if (!len) return;
1303
1304 w->caretPos -= len;
1305 if (w->caretPos < 0) { w->caretPos = 0; }
1306
1307 for (i = 0; i <= len; i++) {
1308 String_DeleteAt(&w->text, w->caretPos);
1309 }
1310
1311 if (w->caretPos >= w->text.length) { w->caretPos = -1; }
1312 if (w->caretPos == -1 && w->text.length > 0) {
1313 String_InsertAt(&w->text, w->text.length, ' ');
1314 } else if (w->caretPos >= 0 && w->text.buffer[w->caretPos] != ' ') {
1315 String_InsertAt(&w->text, w->caretPos, ' ');
1316 }
1317 InputWidget_UpdateText(w);
1318 } else if (w->text.length > 0 && w->caretPos != 0) {
1319 InputWidget_DeleteChar(w);
1320 InputWidget_UpdateText(w);
1321 }
1322}
1323
1324static void InputWidget_DeleteKey(struct InputWidget* w) {
1325 if (w->text.length > 0 && w->caretPos != -1) {

Callers 1

InputWidget_KeyDownFunction · 0.85

Calls 5

WordWrap_GetBackLengthFunction · 0.85
String_DeleteAtFunction · 0.85
String_InsertAtFunction · 0.85
InputWidget_UpdateTextFunction · 0.85
InputWidget_DeleteCharFunction · 0.85

Tested by

no test coverage detected