| @@ -808,20 +808,38 @@ public class JuceAppActivity extends $$JuceAppActivityBaseClass$$ | |||||
| } | } | ||||
| private class TreeObserver implements ViewTreeObserver.OnGlobalLayoutListener | private class TreeObserver implements ViewTreeObserver.OnGlobalLayoutListener | ||||
| { | |||||
| { | |||||
| TreeObserver() | |||||
| { | |||||
| keyboardShown = false; | |||||
| } | |||||
| @Override | @Override | ||||
| public void onGlobalLayout() | public void onGlobalLayout() | ||||
| { | { | ||||
| Rect r = new Rect(); | Rect r = new Rect(); | ||||
| ViewGroup parentView = (ViewGroup) getParent(); | |||||
| if (parentView == null) | |||||
| return; | |||||
| view.getWindowVisibleDisplayFrame(r); | |||||
| parentView.getWindowVisibleDisplayFrame (r); | |||||
| int diff = view.getHeight() - (r.bottom - r.top); | |||||
| int diff = parentView.getHeight() - (r.bottom - r.top); | |||||
| // Arbitrary threshold, surely keyboard would take more than 20 pix. | // Arbitrary threshold, surely keyboard would take more than 20 pix. | ||||
| if (diff < 20) | |||||
| handleKeyboardHidden (view.host); | |||||
| }; | |||||
| if (diff < 20 && keyboardShown) | |||||
| { | |||||
| keyboardShown = false; | |||||
| handleKeyboardHidden (view.host); | |||||
| } | |||||
| if (! keyboardShown && diff > 20) | |||||
| keyboardShown = true; | |||||
| }; | |||||
| private boolean keyboardShown; | |||||
| }; | }; | ||||
| private ComponentPeerView view; | private ComponentPeerView view; | ||||