diff --git a/Makefile b/Makefile index c51f81cb..a11b6665 100644 --- a/Makefile +++ b/Makefile @@ -2668,7 +2668,7 @@ Q3UIVMOBJ = $(Q3UIOBJ_:%.o=%.asm) $(B)/$(BASEGAME)/ui$(SHLIBNAME): $(Q3UIOBJ) $(echo_cmd) "LD $@" - $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) + $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) $(CLIENT_LIBS) $(B)/$(BASEGAME)/vm/ui.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM) $(echo_cmd) "Q3ASM $@" diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c3e41ab0..10e1ecbb 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -5,6 +5,7 @@ android:versionCode="34" android:versionName="0.23.0"> + diff --git a/android/app/src/main/cpp/code/q3_ui/ui_qmenu.c b/android/app/src/main/cpp/code/q3_ui/ui_qmenu.c index f9df6e1c..517547af 100644 --- a/android/app/src/main/cpp/code/q3_ui/ui_qmenu.c +++ b/android/app/src/main/cpp/code/q3_ui/ui_qmenu.c @@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Quake's menu framework system. **********************************************************************/ #include "ui_local.h" +#include "SDL.h" sfxHandle_t menu_in_sound; sfxHandle_t menu_move_sound; @@ -1653,6 +1654,18 @@ sfxHandle_t Menu_DefaultKey( menuframework_s *m, int key ) case MTYPE_FIELD: sound = MenuField_Key( (menufield_s*)item, &key ); + +#if __ANDROID__ + //show virtual keyboard + menufield_s* m = (menufield_s*)item; + if ( key == 178 ) + { + //delete value on click + sprintf( m->field.buffer, "" ); + } + m->field.cursor = strlen( m->field.buffer ); + SDL_StartTextInput(); +#endif break; } diff --git a/android/app/src/main/cpp/code/sdl/sdl_input.c b/android/app/src/main/cpp/code/sdl/sdl_input.c index df1763af..611501a4 100644 --- a/android/app/src/main/cpp/code/sdl/sdl_input.c +++ b/android/app/src/main/cpp/code/sdl/sdl_input.c @@ -1246,8 +1246,6 @@ void IN_Init( void *windowData ) in_joystick = Cvar_Get( "in_joystick", "0", CVAR_ARCHIVE|CVAR_LATCH ); in_joystickThreshold = Cvar_Get( "joy_threshold", "0.15", CVAR_ARCHIVE ); - SDL_StartTextInput( ); - mouseAvailable = ( in_mouse->value != 0 ); IN_DeactivateMouse( Cvar_VariableIntegerValue( "r_fullscreen" ) != 0 ); diff --git a/android/app/src/main/cpp/code/vr/vr_input.c b/android/app/src/main/cpp/code/vr/vr_input.c index 0c0eab36..edbd8d52 100644 --- a/android/app/src/main/cpp/code/vr/vr_input.c +++ b/android/app/src/main/cpp/code/vr/vr_input.c @@ -452,7 +452,11 @@ static void IN_VRController( qboolean isRightController, ovrTracking remoteTrack cl.snap.ps.pm_type == PM_INTERMISSION) { int mouse_multiplier = 10; - Com_QueueEvent(in_vrEventTime, SE_MOUSE, vr.weaponangles_delta[YAW] * mouse_multiplier, -vr.weaponangles_delta[PITCH] * mouse_multiplier, 0, NULL); + //ignore cursor jumping when e.g. showing keyboard + if ( ( fabs(vr.weaponangles_delta[ YAW ]) < 10 ) && ( fabs(vr.weaponangles_delta[ PITCH ]) < 10 ) ) + { + Com_QueueEvent(in_vrEventTime, SE_MOUSE, vr.weaponangles_delta[YAW] * mouse_multiplier, -vr.weaponangles_delta[PITCH] * mouse_multiplier, 0, NULL); + } } } else { vec3_t rotation = {0}; diff --git a/android/app/src/main/cpp/main.cpp b/android/app/src/main/cpp/main.cpp index 6de0f2ed..417a3565 100644 --- a/android/app/src/main/cpp/main.cpp +++ b/android/app/src/main/cpp/main.cpp @@ -84,7 +84,8 @@ int main(int argc, char* argv[]) { VR_EnterVR(engine, java); while (1) { - SDL_Event event; + //Polling events here breaks sdl_input keyboard! + /*SDL_Event event; while (SDL_PollEvent(&event)) { LOGI("Received SDL Event: %d", event.type); switch (event.type) @@ -97,7 +98,7 @@ int main(int argc, char* argv[]) { VR_LeaveVR(engine); break; } - } + }*/ VR_DrawFrame(engine); } diff --git a/android/app/src/main/java/org/libsdl/app/SDLActivity.java b/android/app/src/main/java/org/libsdl/app/SDLActivity.java index 8c363ed5..37d6b318 100644 --- a/android/app/src/main/java/org/libsdl/app/SDLActivity.java +++ b/android/app/src/main/java/org/libsdl/app/SDLActivity.java @@ -264,6 +264,9 @@ public class SDLActivity extends Activity { if (SDLActivity.mBrokenLibraries) { return; } + if (mScreenKeyboardShown) { + return; + } SDLActivity.mHasFocus = hasFocus; if (hasFocus) {