| @@ -701,7 +701,7 @@ public class JuceAppActivity extends $$JuceAppActivityBaseClass$$ | |||||
| //============================================================================== | //============================================================================== | ||||
| private native void handleKeyDown (long host, int keycode, int textchar); | private native void handleKeyDown (long host, int keycode, int textchar); | ||||
| private native void handleKeyUp (long host, int keycode, int textchar); | private native void handleKeyUp (long host, int keycode, int textchar); | ||||
| private native void handleBackButton (long host); | |||||
| private native void handleBackButton (long host); | |||||
| private native void handleKeyboardHidden (long host); | private native void handleKeyboardHidden (long host); | ||||
| public void showKeyboard (String type) | public void showKeyboard (String type) | ||||
| @@ -713,12 +713,12 @@ public class JuceAppActivity extends $$JuceAppActivityBaseClass$$ | |||||
| if (type.length() > 0) | if (type.length() > 0) | ||||
| { | { | ||||
| imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT); | imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT); | ||||
| imm.setInputMethod (getWindowToken(), type); | |||||
| imm.setInputMethod (getWindowToken(), type); | |||||
| keyboardDismissListener.startListening(); | keyboardDismissListener.startListening(); | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| imm.hideSoftInputFromWindow (getWindowToken(), 0); | |||||
| imm.hideSoftInputFromWindow (getWindowToken(), 0); | |||||
| keyboardDismissListener.stopListening(); | keyboardDismissListener.stopListening(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -784,47 +784,47 @@ public class JuceAppActivity extends $$JuceAppActivityBaseClass$$ | |||||
| } | } | ||||
| return false; | return false; | ||||
| } | |||||
| //============================================================================== | |||||
| private final class KeyboardDismissListener | |||||
| { | |||||
| public KeyboardDismissListener (ComponentPeerView viewToUse) | |||||
| { | |||||
| view = viewToUse; | |||||
| } | |||||
| private void startListening() | |||||
| { | |||||
| view.getViewTreeObserver().addOnGlobalLayoutListener(viewTreeObserver); | |||||
| } | |||||
| private void stopListening() | |||||
| { | |||||
| view.getViewTreeObserver().removeGlobalOnLayoutListener(viewTreeObserver); | |||||
| } | |||||
| private class TreeObserver implements ViewTreeObserver.OnGlobalLayoutListener | |||||
| { | |||||
| @Override | |||||
| public void onGlobalLayout() | |||||
| { | |||||
| Rect r = new Rect(); | |||||
| view.getWindowVisibleDisplayFrame(r); | |||||
| int diff = view.getHeight() - (r.bottom - r.top); | |||||
| // Arbitrary threshold, surely keyboard would take more than 20 pix. | |||||
| if (diff < 20) | |||||
| handleKeyboardHidden (view.host); | |||||
| }; | |||||
| }; | |||||
| private ComponentPeerView view; | |||||
| private TreeObserver viewTreeObserver = new TreeObserver(); | |||||
| } | |||||
| } | |||||
| //============================================================================== | |||||
| private final class KeyboardDismissListener | |||||
| { | |||||
| public KeyboardDismissListener (ComponentPeerView viewToUse) | |||||
| { | |||||
| view = viewToUse; | |||||
| } | |||||
| private void startListening() | |||||
| { | |||||
| view.getViewTreeObserver().addOnGlobalLayoutListener(viewTreeObserver); | |||||
| } | |||||
| private void stopListening() | |||||
| { | |||||
| view.getViewTreeObserver().removeGlobalOnLayoutListener(viewTreeObserver); | |||||
| } | |||||
| private class TreeObserver implements ViewTreeObserver.OnGlobalLayoutListener | |||||
| { | |||||
| @Override | |||||
| public void onGlobalLayout() | |||||
| { | |||||
| Rect r = new Rect(); | |||||
| view.getWindowVisibleDisplayFrame(r); | |||||
| int diff = view.getHeight() - (r.bottom - r.top); | |||||
| // Arbitrary threshold, surely keyboard would take more than 20 pix. | |||||
| if (diff < 20) | |||||
| handleKeyboardHidden (view.host); | |||||
| }; | |||||
| }; | |||||
| private ComponentPeerView view; | |||||
| private TreeObserver viewTreeObserver = new TreeObserver(); | |||||
| } | |||||
| private KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this); | private KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this); | ||||
| // this is here to make keyboard entry work on a Galaxy Tab2 10.1 | // this is here to make keyboard entry work on a Galaxy Tab2 10.1 | ||||