mirror of
				https://github.com/fankes/termux-app.git
				synced 2025-10-25 05:09:20 +08:00 
			
		
		
		
	Remove the fullscreen setting
Trying to use fullscreen doesn't work well in a multi-windowed world and makes using translucent navigation and status bars more complicated.
This commit is contained in:
		| @@ -1,67 +0,0 @@ | |||||||
| package com.termux.app; |  | ||||||
|  |  | ||||||
| import android.graphics.Color; |  | ||||||
| import android.graphics.drawable.ColorDrawable; |  | ||||||
| import android.os.Build; |  | ||||||
| import android.view.View; |  | ||||||
|  |  | ||||||
| import com.termux.R; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Utility to manage full screen immersive mode. |  | ||||||
|  * <p/> |  | ||||||
|  * See https://code.google.com/p/android/issues/detail?id=5497 |  | ||||||
|  */ |  | ||||||
| final class FullScreenHelper { |  | ||||||
|  |  | ||||||
|     private boolean mEnabled = false; |  | ||||||
|     final TermuxActivity mActivity; |  | ||||||
|  |  | ||||||
|     public FullScreenHelper(TermuxActivity activity) { |  | ||||||
|         this.mActivity = activity; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public void setImmersive(boolean enabled) { |  | ||||||
|         if (enabled == mEnabled) return; |  | ||||||
|         mEnabled = enabled; |  | ||||||
|  |  | ||||||
|         View decorView = mActivity.getWindow().getDecorView(); |  | ||||||
|  |  | ||||||
|         if (enabled) { |  | ||||||
|             decorView.setOnSystemUiVisibilityChangeListener |  | ||||||
|                 (new View.OnSystemUiVisibilityChangeListener() { |  | ||||||
|                     @Override |  | ||||||
|                     public void onSystemUiVisibilityChange(int visibility) { |  | ||||||
|                         if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { |  | ||||||
|                             if (mActivity.mSettings.isShowExtraKeys()) { |  | ||||||
|                                 mActivity.findViewById(R.id.viewpager).setVisibility(View.VISIBLE); |  | ||||||
|                             } |  | ||||||
|                             setImmersiveMode(); |  | ||||||
|                         } else { |  | ||||||
|                             mActivity.findViewById(R.id.viewpager).setVisibility(View.GONE); |  | ||||||
|                         } |  | ||||||
|                     } |  | ||||||
|                 }); |  | ||||||
|             setImmersiveMode(); |  | ||||||
|         } else { |  | ||||||
|             decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); |  | ||||||
|             decorView.setOnSystemUiVisibilityChangeListener(null); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private static boolean isColorLight(int color) { |  | ||||||
|         double darkness = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255; |  | ||||||
|         return darkness < 0.5; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     void setImmersiveMode() { |  | ||||||
|         int flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |  | ||||||
|             | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |  | ||||||
|             | View.SYSTEM_UI_FLAG_FULLSCREEN; |  | ||||||
|         int color = ((ColorDrawable) mActivity.getWindow().getDecorView().getBackground()).getColor(); |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isColorLight(color)) |  | ||||||
|             flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; |  | ||||||
|         mActivity.getWindow().getDecorView().setSystemUiVisibility(flags); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -73,6 +73,7 @@ import java.io.InputStream; | |||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.LinkedHashSet; | import java.util.LinkedHashSet; | ||||||
|  | import java.util.List; | ||||||
| import java.util.Properties; | import java.util.Properties; | ||||||
| import java.util.regex.Matcher; | import java.util.regex.Matcher; | ||||||
| import java.util.regex.Pattern; | import java.util.regex.Pattern; | ||||||
| @@ -95,7 +96,6 @@ public final class TermuxActivity extends Activity implements ServiceConnection | |||||||
|     private static final int CONTEXTMENU_KILL_PROCESS_ID = 4; |     private static final int CONTEXTMENU_KILL_PROCESS_ID = 4; | ||||||
|     private static final int CONTEXTMENU_RESET_TERMINAL_ID = 5; |     private static final int CONTEXTMENU_RESET_TERMINAL_ID = 5; | ||||||
|     private static final int CONTEXTMENU_STYLING_ID = 6; |     private static final int CONTEXTMENU_STYLING_ID = 6; | ||||||
|     private static final int CONTEXTMENU_TOGGLE_FULLSCREEN_ID = 7; |  | ||||||
|     private static final int CONTEXTMENU_HELP_ID = 8; |     private static final int CONTEXTMENU_HELP_ID = 8; | ||||||
|  |  | ||||||
|     private static final int MAX_SESSIONS = 8; |     private static final int MAX_SESSIONS = 8; | ||||||
| @@ -111,8 +111,6 @@ public final class TermuxActivity extends Activity implements ServiceConnection | |||||||
|  |  | ||||||
|     ExtraKeysView mExtraKeysView; |     ExtraKeysView mExtraKeysView; | ||||||
|  |  | ||||||
|     final FullScreenHelper mFullScreenHelper = new FullScreenHelper(this); |  | ||||||
|  |  | ||||||
|     TermuxPreferences mSettings; |     TermuxPreferences mSettings; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -215,7 +213,6 @@ public final class TermuxActivity extends Activity implements ServiceConnection | |||||||
|         mTerminalView.setOnKeyListener(new TermuxViewClient(this)); |         mTerminalView.setOnKeyListener(new TermuxViewClient(this)); | ||||||
|  |  | ||||||
|         mTerminalView.setTextSize(mSettings.getFontSize()); |         mTerminalView.setTextSize(mSettings.getFontSize()); | ||||||
|         mFullScreenHelper.setImmersive(mSettings.isFullScreen()); |  | ||||||
|         mTerminalView.requestFocus(); |         mTerminalView.requestFocus(); | ||||||
|  |  | ||||||
|         final ViewPager viewPager = findViewById(R.id.viewpager); |         final ViewPager viewPager = findViewById(R.id.viewpager); | ||||||
| @@ -657,7 +654,6 @@ public final class TermuxActivity extends Activity implements ServiceConnection | |||||||
|         menu.add(Menu.NONE, CONTEXTMENU_SHARE_TRANSCRIPT_ID, Menu.NONE, R.string.select_all_and_share); |         menu.add(Menu.NONE, CONTEXTMENU_SHARE_TRANSCRIPT_ID, Menu.NONE, R.string.select_all_and_share); | ||||||
|         menu.add(Menu.NONE, CONTEXTMENU_RESET_TERMINAL_ID, Menu.NONE, R.string.reset_terminal); |         menu.add(Menu.NONE, CONTEXTMENU_RESET_TERMINAL_ID, Menu.NONE, R.string.reset_terminal); | ||||||
|         menu.add(Menu.NONE, CONTEXTMENU_KILL_PROCESS_ID, Menu.NONE, getResources().getString(R.string.kill_process, getCurrentTermSession().getPid())).setEnabled(currentSession.isRunning()); |         menu.add(Menu.NONE, CONTEXTMENU_KILL_PROCESS_ID, Menu.NONE, getResources().getString(R.string.kill_process, getCurrentTermSession().getPid())).setEnabled(currentSession.isRunning()); | ||||||
|         menu.add(Menu.NONE, CONTEXTMENU_TOGGLE_FULLSCREEN_ID, Menu.NONE, R.string.toggle_fullscreen).setCheckable(true).setChecked(mSettings.isFullScreen()); |  | ||||||
|         menu.add(Menu.NONE, CONTEXTMENU_STYLING_ID, Menu.NONE, R.string.style_terminal); |         menu.add(Menu.NONE, CONTEXTMENU_STYLING_ID, Menu.NONE, R.string.style_terminal); | ||||||
|         menu.add(Menu.NONE, CONTEXTMENU_HELP_ID, Menu.NONE, R.string.help); |         menu.add(Menu.NONE, CONTEXTMENU_HELP_ID, Menu.NONE, R.string.help); | ||||||
|     } |     } | ||||||
| @@ -791,11 +787,8 @@ public final class TermuxActivity extends Activity implements ServiceConnection | |||||||
|                             } |                             } | ||||||
|                         }).setNegativeButton(android.R.string.cancel, null).show(); |                         }).setNegativeButton(android.R.string.cancel, null).show(); | ||||||
|                 } |                 } | ||||||
|  |                 return true; | ||||||
|             } |             } | ||||||
|             return true; |  | ||||||
|             case CONTEXTMENU_TOGGLE_FULLSCREEN_ID: |  | ||||||
|                 toggleImmersive(); |  | ||||||
|                 return true; |  | ||||||
|             case CONTEXTMENU_HELP_ID: |             case CONTEXTMENU_HELP_ID: | ||||||
|                 startActivity(new Intent(this, TermuxHelpActivity.class)); |                 startActivity(new Intent(this, TermuxHelpActivity.class)); | ||||||
|                 return true; |                 return true; | ||||||
| @@ -811,12 +804,6 @@ public final class TermuxActivity extends Activity implements ServiceConnection | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     void toggleImmersive() { |  | ||||||
|         boolean newValue = !mSettings.isFullScreen(); |  | ||||||
|         mSettings.setFullScreen(this, newValue); |  | ||||||
|         mFullScreenHelper.setImmersive(newValue); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     void changeFontSize(boolean increase) { |     void changeFontSize(boolean increase) { | ||||||
|         mSettings.changeFontSize(this, increase); |         mSettings.changeFontSize(this, increase); | ||||||
|         mTerminalView.setTextSize(mSettings.getFontSize()); |         mTerminalView.setTextSize(mSettings.getFontSize()); | ||||||
| @@ -835,9 +822,8 @@ public final class TermuxActivity extends Activity implements ServiceConnection | |||||||
|     public TerminalSession getStoredCurrentSessionOrLast() { |     public TerminalSession getStoredCurrentSessionOrLast() { | ||||||
|         TerminalSession stored = TermuxPreferences.getCurrentSession(this); |         TerminalSession stored = TermuxPreferences.getCurrentSession(this); | ||||||
|         if (stored != null) return stored; |         if (stored != null) return stored; | ||||||
|         int numberOfSessions = mTermService.getSessions().size(); |         List<TerminalSession> sessions = mTermService.getSessions(); | ||||||
|         if (numberOfSessions == 0) return null; |         return sessions.isEmpty() ? null : sessions.get(sessions.size() - 1); | ||||||
|         return mTermService.getSessions().get(numberOfSessions - 1); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Show a toast and dismiss the last one if still visible. */ |     /** Show a toast and dismiss the last one if still visible. */ | ||||||
|   | |||||||
| @@ -32,12 +32,10 @@ final class TermuxPreferences { | |||||||
|     private final int MIN_FONTSIZE; |     private final int MIN_FONTSIZE; | ||||||
|     private static final int MAX_FONTSIZE = 256; |     private static final int MAX_FONTSIZE = 256; | ||||||
|  |  | ||||||
|     private static final String FULLSCREEN_KEY = "fullscreen"; |  | ||||||
|     private static final String SHOW_EXTRA_KEYS_KEY = "show_extra_keys"; |     private static final String SHOW_EXTRA_KEYS_KEY = "show_extra_keys"; | ||||||
|     private static final String FONTSIZE_KEY = "fontsize"; |     private static final String FONTSIZE_KEY = "fontsize"; | ||||||
|     private static final String CURRENT_SESSION_KEY = "current_session"; |     private static final String CURRENT_SESSION_KEY = "current_session"; | ||||||
|  |  | ||||||
|     private boolean mFullScreen; |  | ||||||
|     private int mFontSize; |     private int mFontSize; | ||||||
|  |  | ||||||
|     @AsciiBellBehaviour |     @AsciiBellBehaviour | ||||||
| @@ -56,7 +54,6 @@ final class TermuxPreferences { | |||||||
|         // to prevent invisible text due to zoom be mistake: |         // to prevent invisible text due to zoom be mistake: | ||||||
|         MIN_FONTSIZE = (int) (4f * dipInPixels); |         MIN_FONTSIZE = (int) (4f * dipInPixels); | ||||||
|  |  | ||||||
|         mFullScreen = prefs.getBoolean(FULLSCREEN_KEY, false); |  | ||||||
|         mShowExtraKeys = prefs.getBoolean(SHOW_EXTRA_KEYS_KEY, false); |         mShowExtraKeys = prefs.getBoolean(SHOW_EXTRA_KEYS_KEY, false); | ||||||
|  |  | ||||||
|         // http://www.google.com/design/spec/style/typography.html#typography-line-height |         // http://www.google.com/design/spec/style/typography.html#typography-line-height | ||||||
| @@ -72,15 +69,6 @@ final class TermuxPreferences { | |||||||
|         mFontSize = Math.max(MIN_FONTSIZE, Math.min(mFontSize, MAX_FONTSIZE)); |         mFontSize = Math.max(MIN_FONTSIZE, Math.min(mFontSize, MAX_FONTSIZE)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     boolean isFullScreen() { |  | ||||||
|         return mFullScreen; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     void setFullScreen(Context context, boolean newValue) { |  | ||||||
|         mFullScreen = newValue; |  | ||||||
|         PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(FULLSCREEN_KEY, newValue).apply(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     boolean isShowExtraKeys() { |     boolean isShowExtraKeys() { | ||||||
|         return mShowExtraKeys; |         return mShowExtraKeys; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -73,8 +73,6 @@ public final class TermuxViewClient implements TerminalViewClient { | |||||||
|                 mActivity.getDrawer().openDrawer(Gravity.LEFT); |                 mActivity.getDrawer().openDrawer(Gravity.LEFT); | ||||||
|             } else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { |             } else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { | ||||||
|                 mActivity.getDrawer().closeDrawers(); |                 mActivity.getDrawer().closeDrawers(); | ||||||
|             } else if (unicodeChar == 'f'/* full screen */) { |  | ||||||
|                 mActivity.toggleImmersive(); |  | ||||||
|             } else if (unicodeChar == 'k'/* keyboard */) { |             } else if (unicodeChar == 'k'/* keyboard */) { | ||||||
|                 InputMethodManager imm = (InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE); |                 InputMethodManager imm = (InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE); | ||||||
|                 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); |                 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); | ||||||
|   | |||||||
| @@ -1,7 +1,8 @@ | |||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="match_parent" |     android:layout_height="match_parent" | ||||||
|     android:orientation="vertical"> |     android:orientation="vertical" | ||||||
|  |     android:fitsSystemWindows="true"> | ||||||
|  |  | ||||||
|     <android.support.v4.widget.DrawerLayout |     <android.support.v4.widget.DrawerLayout | ||||||
|         android:id="@+id/drawer_layout" |         android:id="@+id/drawer_layout" | ||||||
|   | |||||||
| @@ -7,7 +7,6 @@ | |||||||
|    <string name="toggle_soft_keyboard">Keyboard</string> |    <string name="toggle_soft_keyboard">Keyboard</string> | ||||||
|    <string name="reset_terminal">Reset</string> |    <string name="reset_terminal">Reset</string> | ||||||
|    <string name="style_terminal">Style</string> |    <string name="style_terminal">Style</string> | ||||||
|    <string name="toggle_fullscreen">Fullscreen</string> |  | ||||||
|    <string name="share_transcript_title">Terminal transcript</string> |    <string name="share_transcript_title">Terminal transcript</string> | ||||||
|    <string name="help">Help</string> |    <string name="help">Help</string> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -15,6 +15,9 @@ | |||||||
|              selecting text on pre-6.0 (non-floating toolbar). --> |              selecting text on pre-6.0 (non-floating toolbar). --> | ||||||
|         <item name="android:windowActionModeOverlay">true</item> |         <item name="android:windowActionModeOverlay">true</item> | ||||||
|  |  | ||||||
|  |         <item name="android:windowTranslucentStatus">true</item> | ||||||
|  |         <item name="android:windowTranslucentNavigation">true</item> | ||||||
|  |  | ||||||
|         <!-- https://developer.android.com/training/tv/start/start.html#transition-color --> |         <!-- https://developer.android.com/training/tv/start/start.html#transition-color --> | ||||||
|         <item name="android:windowAllowReturnTransitionOverlap">true</item> |         <item name="android:windowAllowReturnTransitionOverlap">true</item> | ||||||
|         <item name="android:windowAllowEnterTransitionOverlap">true</item> |         <item name="android:windowAllowEnterTransitionOverlap">true</item> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user