diff --git a/project/java/MainActivity.java b/project/java/MainActivity.java index 4920cdf10..c8bc7988a 100644 --- a/project/java/MainActivity.java +++ b/project/java/MainActivity.java @@ -414,11 +414,24 @@ public class MainActivity extends Activity System.exit(0); } + static boolean keyboardWithoutTextInputShown = false; public void showScreenKeyboardWithoutTextInputField() { - _inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); - _inputManager.showSoftInput(mGLView, InputMethodManager.SHOW_FORCED); - getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + if( !keyboardWithoutTextInputShown ) + { + keyboardWithoutTextInputShown = true; + _inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + _inputManager.showSoftInput(mGLView, InputMethodManager.SHOW_FORCED); + getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + } + else + { + keyboardWithoutTextInputShown = false; + getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); + _inputManager.hideSoftInputFromWindow(mGLView.getWindowToken(), 0); + DimSystemStatusBar.get().dim(_videoLayout); + DimSystemStatusBar.get().dim(mGLView); + } } public void showScreenKeyboard(final String oldText, boolean sendBackspace) @@ -1167,7 +1180,7 @@ abstract class DimSystemStatusBar { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT && Globals.ImmersiveMode) // Immersive mode, I already hear curses when system bar reappears mid-game from the slightest swipe at the bottom of the screen - view.setSystemUiVisibility(android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); + view.setSystemUiVisibility(android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | android.view.View.SYSTEM_UI_FLAG_FULLSCREEN); else view.setSystemUiVisibility(android.view.View.STATUS_BAR_HIDDEN); } diff --git a/project/jni/application/ballfield/ballfield.cpp b/project/jni/application/ballfield/ballfield.cpp index 14f64c50f..b89a87a0c 100644 --- a/project/jni/application/ballfield/ballfield.cpp +++ b/project/jni/application/ballfield/ballfield.cpp @@ -674,6 +674,10 @@ int main(int argc, char* argv[]) SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD, 1); if(evt.key.keysym.sym == SDLK_3) SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD, 0); + if(evt.key.keysym.sym == SDLK_4) + SDL_ToggleScreenKeyboard(NULL); + if(evt.key.keysym.sym == SDLK_5) + SDL_ANDROID_ToggleScreenKeyboardWithoutTextInput(); } } if(evt.type == SDL_MOUSEBUTTONUP || evt.type == SDL_MOUSEBUTTONDOWN) diff --git a/project/jni/application/xserver-gimp/AndroidAppSettings.cfg b/project/jni/application/xserver-gimp/AndroidAppSettings.cfg index 0631da656..d77227a0c 100644 --- a/project/jni/application/xserver-gimp/AndroidAppSettings.cfg +++ b/project/jni/application/xserver-gimp/AndroidAppSettings.cfg @@ -7,10 +7,10 @@ AppName="GIMP Inkscape" AppFullName=org.gimp.inkscape # Application version code (integer) -AppVersionCode=28208 +AppVersionCode=28209 # Application user-visible version name (string) -AppVersionName="2.8.2.08" +AppVersionName="2.8.2.09" # Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' # If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu @@ -41,7 +41,7 @@ InhibitSuspend=n # Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only # with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) -VideoDepthBpp=24 +VideoDepthBpp=16 # Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) NeedDepthBuffer=n @@ -138,7 +138,7 @@ AppRecordsAudio=n AccessSdCard= # Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) -ImmersiveMode= +ImmersiveMode=y # Application implements Android-specific routines to put to background, and will not draw anything to screen # between SDL_ACTIVEEVENT lost / gained notifications - you should check for them diff --git a/project/jni/application/xserver-gimp/readme.txt b/project/jni/application/xserver-gimp/readme.txt index 49e7fc86a..f7515884a 100644 --- a/project/jni/application/xserver-gimp/readme.txt +++ b/project/jni/application/xserver-gimp/readme.txt @@ -47,7 +47,7 @@ sudo cp -a /project/jni/application/src/xserver/android/xhost dist-gimp-whe sudo cp -a /project/jni/application/src/xserver/android/xkbcomp dist-gimp-wheezy/usr/bin/ sudo cp -a /project/jni/application/src/xserver/android/xli dist-gimp-wheezy/usr/bin/ -Re-generate system image +Update system image archive cd dist-gimp-wheezy sudo tar cvzf ../dist-gimp-wheezy.tar.gz * diff --git a/project/jni/application/xserver/AndroidAppSettings.cfg b/project/jni/application/xserver/AndroidAppSettings.cfg index a41957e8e..41f1c74d2 100644 --- a/project/jni/application/xserver/AndroidAppSettings.cfg +++ b/project/jni/application/xserver/AndroidAppSettings.cfg @@ -1,21 +1,16 @@ # The application settings for Android libSDL port -AppSettingVersion=19 - -# libSDL version to use (1.2 or 1.3, specify 1.3 for SDL2) -LibSdlVersion=1.2 - # Specify application name (e.x. My Application) AppName="XServer XSDL" # Specify reversed site name of application (e.x. com.mysite.myapp) AppFullName=x.org.server -# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape -ScreenOrientation=h +# Application version code (integer) +AppVersionCode=11108 -# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer -InhibitSuspend=n +# Application user-visible version name (string) +AppVersionName="1.11.08" # Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' # If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu @@ -25,6 +20,25 @@ InhibitSuspend=n # Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS AppDataDownloadUrl="!!Data files|:data.tar.gz:data-1.tgz^!!Data files|:busybox:busybox^!!Data files|:DroidSansMono.ttf:DroidSansMono.ttf" +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=y + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="%" + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ +ReadmeText='' + +# libSDL version to use (1.2/1.3/2.0) +LibSdlVersion=1.2 + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape +ScreenOrientation=h + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer +InhibitSuspend=n + # Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only # with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) VideoDepthBpp=16 @@ -75,6 +89,8 @@ CompatibilityHacksSlowCompatibleEventQueue=n # Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState= +# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects. +# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n) CompatibilityHacksProperUsageOfSDL_UpdateRects=y # Application uses mouse (y) or (n), this will show mouse emulation dialog to the user @@ -86,10 +102,11 @@ AppNeedsTwoButtonMouse=y # Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) ShowMouseCursor=n +# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n) GenerateSubframeTouchEvents=y # Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) -ForceRelativeMouseMode=n +ForceRelativeMouseMode=y # Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n) AppNeedsArrowKeys=n @@ -117,6 +134,12 @@ AppUsesMultitouch=y # This option will add additional permission to Android manifest (y)/(n) AppRecordsAudio=n +# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n) +AccessSdCard= + +# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) +ImmersiveMode= + # Application implements Android-specific routines to put to background, and will not draw anything to screen # between SDL_ACTIVEEVENT lost / gained notifications - you should check for them # rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) @@ -158,7 +181,7 @@ StartupMenuButtonTimeout=3000 # Menu items to hide from startup menu, available menu items: # SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout -HiddenMenuOptions='' #SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMouse.DisplaySizeConfig +HiddenMenuOptions='' # Menu items to show at startup - this is Java code snippet, leave empty for default # new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() @@ -173,18 +196,6 @@ MultiABI=armeabi-v7a # Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower AppMinimumRAM=0 -# Application version code (integer) -AppVersionCode=11106 - -# Application user-visible version name (string) -AppVersionName="1.11.06" - -# Reset SDL config when updating application to the new version (y) / (n) -ResetSdlConfigForThisVersion=y - -# Delete application data files when upgrading (specify file/dir paths separated by spaces) -DeleteFilesOnUpgrade="%" - # Optional shared libraries to compile - removing some of them will save space # MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed # Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 @@ -211,10 +222,6 @@ AppBuildExclude='' # Application command line parameters, including app name as 0-th param AppCmdline='XSDL' -# Here you may type readme text, which will be shown during startup. Format is: -# Text in English, use \\\\n to separate lines^de:Text in Deutsch^ru:Text in Russian, and so on (that's four backslashes, nice isn't it?) -ReadmeText='' - # Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens # Minimum screen size that application supports: (s)mall / (m)edium / (l)arge MinimumScreenSize=m diff --git a/project/jni/application/xserver/java.diff b/project/jni/application/xserver/java.diff deleted file mode 100644 index 4462801de..000000000 --- a/project/jni/application/xserver/java.diff +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/project/java/Globals.java b/project/java/Globals.java -index 04df3ed..bddaeb1 100644 ---- a/project/java/Globals.java -+++ b/project/java/Globals.java -@@ -90,7 +90,7 @@ class Globals - public static int TrackballDampening = 0; - public static int AudioBufferConfig = 0; - public static boolean OptionalDataDownload[] = null; -- public static int LeftClickMethod = Mouse.LEFT_CLICK_NORMAL; -+ public static int LeftClickMethod = Mouse.LEFT_CLICK_NEAR_CURSOR; - public static int LeftClickKey = KeyEvent.KEYCODE_DPAD_CENTER; - public static int LeftClickTimeout = 3; - public static int RightClickTimeout = 4; -@@ -103,7 +103,7 @@ class Globals - public static boolean RelativeMouseMovement = ForceRelativeMouseMode; // Laptop touchpad mode - public static int RelativeMouseMovementSpeed = 2; - public static int RelativeMouseMovementAccel = 0; -- public static int ShowScreenUnderFinger = Mouse.ZOOM_NONE; -+ public static int ShowScreenUnderFinger = Mouse.ZOOM_MAGNIFIER; - public static boolean KeepAspectRatio = KeepAspectRatioDefaultSetting; - public static int ClickScreenPressure = 0; - public static int ClickScreenTouchspotSize = 0; diff --git a/project/jni/application/xserver/xserver b/project/jni/application/xserver/xserver index b5ebbebd7..54234bc3b 160000 --- a/project/jni/application/xserver/xserver +++ b/project/jni/application/xserver/xserver @@ -1 +1 @@ -Subproject commit b5ebbebd7a5eda2f9648ab36601fcd434316af29 +Subproject commit 54234bc3b93103e11e4242c00466ed4c92ccf7fb diff --git a/project/jni/sdl-1.2/include/SDL_screenkeyboard.h b/project/jni/sdl-1.2/include/SDL_screenkeyboard.h index 5349394e6..b1051d9fc 100644 --- a/project/jni/sdl-1.2/include/SDL_screenkeyboard.h +++ b/project/jni/sdl-1.2/include/SDL_screenkeyboard.h @@ -121,7 +121,7 @@ extern DECLSPEC int SDLCALL SDL_ANDROID_GetScreenKeyboardRedefinedByUser(void); /* Set hint message for the QWERTY text input field, it may be multi-line, set NULL to reset hint to default */ extern DECLSPEC int SDLCALL SDL_ANDROID_SetScreenKeyboardHintMesage(const char * hint); -/* API compatible to SDL2, it's a wrapper to the SDL_ANDROID_ToggleScreenKeyboardWithoutTextInput(), it does not block. +/* API compatible to SDL2, it's a wrapper to the SDL_ANDROID_ToggleScreenKeyboardTextInput(""), it does not block. These functions control native Android QWERTY keyboard, not the overlay buttons */ extern DECLSPEC int SDLCALL SDL_HasScreenKeyboardSupport(void *unused);