Finalize virtual keyboard screen

- Added backspace support
- Added space support
- Added new line support
- Added caps support
- Added symbol support
This commit is contained in:
cryy
2025-04-22 19:36:26 +02:00
parent 50103ce4cf
commit 662bac3053
5 changed files with 388 additions and 115 deletions

View File

@@ -1,10 +1,9 @@
package eu.midnightdust.midnightcontrols.fabric.event;
import eu.midnightdust.midnightcontrols.client.gui.VirtualKeyboardScreen;
import eu.midnightdust.midnightcontrols.client.gui.virtualkeyboard.VirtualKeyboardScreen;
import eu.midnightdust.midnightcontrols.client.mixin.AbstractSignEditScreenAccessor;
import eu.midnightdust.midnightcontrols.client.mixin.BookEditScreenAccessor;
import eu.midnightdust.midnightcontrols.client.mixin.CreativeInventoryScreenAccessor;
import net.fabricmc.fabric.api.client.screen.v1.ScreenMouseEvents;
import net.minecraft.block.entity.SignText;
import net.minecraft.client.gui.Element;
import net.minecraft.client.gui.ParentElement;
import net.minecraft.client.gui.screen.ChatScreen;
@@ -18,7 +17,6 @@ import org.lwjgl.glfw.GLFW;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import static eu.midnightdust.midnightcontrols.MidnightControls.logger;
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client;
@@ -89,14 +87,14 @@ public class MouseClickListener implements ScreenMouseEvents.AllowMouseClick {
virtualKeyboardScreen = new VirtualKeyboardScreen(accessor.midnightcontrols$getTitle(), (text) -> {
client.setScreen(bookEditScreen);
accessor.midnightcontrols$setTitle(text);
});
}, true);
}
else {
virtualKeyboardScreen = new VirtualKeyboardScreen(accessor.midnightcontrols$getCurrentPageContent(), (text) -> {
client.setScreen(bookEditScreen);
accessor.midnightcontrols$setPageContent(text);
accessor.midnightcontrols$getCurrentPageSelectionManager().putCursorAtEnd();
});
}, true);
}
client.setScreen(virtualKeyboardScreen);
@@ -109,7 +107,7 @@ public class MouseClickListener implements ScreenMouseEvents.AllowMouseClick {
private void handleTextFieldClick(TextFieldWidget textField) {
this.link = new ScreenLink(screen, calculatePathToElement(screen, textField));
var virtualKeyboardScreen = new VirtualKeyboardScreen(textField.getText(), this::handleKeyboardClose);
var virtualKeyboardScreen = new VirtualKeyboardScreen(textField.getText(), this::handleKeyboardClose, false);
client.setScreen(virtualKeyboardScreen);
}
@@ -126,7 +124,6 @@ public class MouseClickListener implements ScreenMouseEvents.AllowMouseClick {
txtField.setText(newText);
switch (this.link.screen()) {
case CreativeInventoryScreen creativeInventoryScreen -> {
var accessor = (CreativeInventoryScreenAccessor) creativeInventoryScreen;