3DS: Chat should be sent immediately after clicking Send, also display normal keyboard layout for 'number' input types since the 3DS numpad keyboard doesn't include a decimal point

This commit is contained in:
UnknownShadow200 2024-04-07 15:02:31 +10:00
parent 1b6ebc5baf
commit d00174c680
3 changed files with 7 additions and 4 deletions

View File

@ -319,6 +319,8 @@ static bool CreateNativeTexture(C3D_Tex* tex, u32 width, u32 height) {
} }
static void TryTransferToVRAM(C3D_Tex* tex) { static void TryTransferToVRAM(C3D_Tex* tex) {
return;
// NOTE: the linearFree below results in broken texture. maybe no DMA?
void* vram = vramAlloc(tex->size); void* vram = vramAlloc(tex->size);
if (!vram) return; if (!vram) return;

View File

@ -220,6 +220,8 @@ static void OnscreenTextChanged(const char* text) {
String_AppendUtf8(&tmp, text, String_Length(text)); String_AppendUtf8(&tmp, text, String_Length(text));
Event_RaiseString(&InputEvents.TextChanged, &tmp); Event_RaiseString(&InputEvents.TextChanged, &tmp);
Input_SetPressed(CCKEY_ENTER);
Input_SetReleased(CCKEY_ENTER);
} }
void Window_OpenKeyboard(struct OpenKeyboardArgs* args) { void Window_OpenKeyboard(struct OpenKeyboardArgs* args) {
@ -230,7 +232,8 @@ void Window_OpenKeyboard(struct OpenKeyboardArgs* args) {
String_EncodeUtf8(input, args->text); String_EncodeUtf8(input, args->text);
int mode = args->type & 0xFF; int mode = args->type & 0xFF;
int type = (mode == KEYBOARD_TYPE_NUMBER || mode == KEYBOARD_TYPE_INTEGER) ? SWKBD_TYPE_NUMPAD : SWKBD_TYPE_WESTERN; // Numpad mode doesn't display . symbol, so can't be used for KEYBOARD_TYPE_NUMBER unfortunately
int type = mode == KEYBOARD_TYPE_INTEGER ? SWKBD_TYPE_NUMPAD : SWKBD_TYPE_WESTERN;
swkbdInit(&swkbd, type, 3, -1); swkbdInit(&swkbd, type, 3, -1);
swkbdSetInitialText(&swkbd, input); swkbdSetInitialText(&swkbd, input);

View File

@ -1299,9 +1299,7 @@ static void C3Di_TexEnvBind(int id, C3D_TexEnv* env)
static void C3D_TexLoadImage(C3D_Tex* tex, const void* data, GPU_TEXFACE face, int level) static void C3D_TexLoadImage(C3D_Tex* tex, const void* data, GPU_TEXFACE face, int level)
{ {
u32 size = 0; u32 size = 0;
void* out = C3D_TexGetImagePtr(tex, void* out = C3D_TexGetImagePtr(tex, tex->data, level, &size);
tex->data,
level, &size);
if (!addrIsVRAM(out)) if (!addrIsVRAM(out))
memcpy(out, data, size); memcpy(out, data, size);