Small refactoring of EnableTextInput

This commit is contained in:
Alibek Omarov 2018-04-22 14:01:56 +03:00
parent 545b781934
commit 63513ec475
4 changed files with 31 additions and 42 deletions

View File

@ -695,16 +695,31 @@ void Key_Event( int key, qboolean down )
}
}
/*
================
Key_EnableTextInput
================
*/
void Key_EnableTextInput( qboolean enable, qboolean force )
{
void (*pfnEnableTextInput)( qboolean enable );
#if XASH_INPUT == INPUT_SDL
SDLash_EnableTextInput( enable, force );
pfnEnableTextInput = SDLash_EnableTextInput;
#elif XASH_INPUT == INPUT_ANDROID
Android_EnableTextInput( enable, force );
#endif
#if 0
Joy_EnableTextInput( enable, force );
pfnEnableTextInput = Android_EnableTextInput;
#else
#error "Here must be a text input for your platform"
return;
#endif
if( enable && ( !host.textmode || force ) )
pfnEnableTextInput( true );
else if( !enable )
pfnEnableTextInput( false );
if( !force )
host.textmode = enable;
}
/*

View File

@ -32,7 +32,6 @@ static enum VGUI_KeyCode s_pVirtualKeyTrans[256];
static enum VGUI_DefaultCursor s_currentCursor;
#ifdef XASH_SDL
#include <SDL_events.h>
#include "platform/sdl/events.h"
static SDL_Cursor* s_pDefaultCursor[20];
#endif
static void *s_pVGuiSupport; // vgui_support library
@ -161,9 +160,8 @@ void GAME_EXPORT VGUI_SetVisible( qboolean state )
SDL_ShowCursor( state );
if( !state )
SDL_GetRelativeMouseState( NULL, NULL );
SDLash_EnableTextInput( state, true );
#endif
Key_EnableTextInput( state, true );
}
int GAME_EXPORT VGUI_UtfProcessChar( int in )
@ -491,21 +489,19 @@ void VGui_KeyEvent( int key, int down )
if( !vgui.initialized )
return;
#ifdef XASH_SDL
if( host.mouse_visible )
SDLash_EnableTextInput( 1, false );
#endif
Key_EnableTextInput( true, false );
switch( key )
{
case K_MOUSE1:
vgui.Mouse( down?MA_PRESSED:MA_RELEASED, MOUSE_LEFT );
vgui.Mouse( down ? MA_PRESSED : MA_RELEASED, MOUSE_LEFT );
return;
case K_MOUSE2:
vgui.Mouse( down?MA_PRESSED:MA_RELEASED, MOUSE_RIGHT );
vgui.Mouse( down ? MA_PRESSED : MA_RELEASED, MOUSE_RIGHT );
return;
case K_MOUSE3:
vgui.Mouse( down?MA_PRESSED:MA_RELEASED, MOUSE_MIDDLE );
vgui.Mouse( down ? MA_PRESSED : MA_RELEASED, MOUSE_MIDDLE );
return;
case K_MWHEELDOWN:
vgui.Mouse( MA_WHEEL, 1 );

View File

@ -177,17 +177,14 @@ SDLash_InputEvent
*/
static void SDLash_InputEvent( SDL_TextInputEvent input )
{
int i;
// Pass characters one by one to Con_CharEvent
for(i = 0; input.text[i]; ++i)
for( char *text = input.text; *text; text++ )
{
int ch;
if( !Q_stricmp( cl_charset->string, "utf-8" ) )
ch = (unsigned char)input.text[i];
ch = (unsigned char)*text;
else
ch = Con_UtfProcessCharForce( (unsigned char)input.text[i] );
ch = Con_UtfProcessCharForce( (unsigned char)*text );
if( !ch )
continue;
@ -202,28 +199,9 @@ SDLash_EnableTextInput
=============
*/
void SDLash_EnableTextInput( int enable, qboolean force )
void SDLash_EnableTextInput( qboolean enable )
{
if( force )
{
if( enable )
SDL_StartTextInput();
else
SDL_StopTextInput();
}
else if( enable )
{
if( !host.textmode )
{
SDL_StartTextInput();
}
host.textmode = true;
}
else
{
SDL_StopTextInput();
host.textmode = false;
}
enable ? SDL_StartTextInput() : SDL_StopTextInput();
}
/*

View File

@ -20,7 +20,7 @@ GNU General Public License for more details.
#ifdef XASH_SDL
void SDLash_RunEvents( void );
void SDLash_EnableTextInput( int enable, qboolean force );
void SDLash_EnableTextInput( qboolean enable );
int SDLash_JoyInit( int numjoy ); // pass -1 to init every joystick
#endif // XASH_SDL