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 eb837aaf..08ef63e1 100644
--- a/android/app/src/main/cpp/code/vr/vr_input.c
+++ b/android/app/src/main/cpp/code/vr/vr_input.c
@@ -417,7 +417,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) {