diff --git a/examples/AnalyticsCollection/Builds/Android/app/src/main/java/com/yourcompany/analyticscollection/AnalyticsCollection.java b/examples/AnalyticsCollection/Builds/Android/app/src/main/java/com/yourcompany/analyticscollection/AnalyticsCollection.java
index e8552048e5..54a4f188b5 100644
--- a/examples/AnalyticsCollection/Builds/Android/app/src/main/java/com/yourcompany/analyticscollection/AnalyticsCollection.java
+++ b/examples/AnalyticsCollection/Builds/Android/app/src/main/java/com/yourcompany/analyticscollection/AnalyticsCollection.java
@@ -784,6 +784,7 @@ public class AnalyticsCollection extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -795,10 +796,12 @@ public class AnalyticsCollection extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -865,6 +868,47 @@ public class AnalyticsCollection extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/AnimationAppExample/Builds/VisualStudio2017/AnimationAppExample_App.vcxproj b/examples/AnimationAppExample/Builds/VisualStudio2017/AnimationAppExample_App.vcxproj
index c3c8ce1c3e..488178e5e4 100644
--- a/examples/AnimationAppExample/Builds/VisualStudio2017/AnimationAppExample_App.vcxproj
+++ b/examples/AnimationAppExample/Builds/VisualStudio2017/AnimationAppExample_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/AnimationAppExample/Builds/VisualStudio2017/AnimationAppExample_App.vcxproj.filters b/examples/AnimationAppExample/Builds/VisualStudio2017/AnimationAppExample_App.vcxproj.filters
index c670039dd5..4bba93ada8 100644
--- a/examples/AnimationAppExample/Builds/VisualStudio2017/AnimationAppExample_App.vcxproj.filters
+++ b/examples/AnimationAppExample/Builds/VisualStudio2017/AnimationAppExample_App.vcxproj.filters
@@ -715,6 +715,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/AudioAppExample/Builds/VisualStudio2017/AudioAppExample_App.vcxproj b/examples/AudioAppExample/Builds/VisualStudio2017/AudioAppExample_App.vcxproj
index 2ce4dae635..2039fd8c3e 100644
--- a/examples/AudioAppExample/Builds/VisualStudio2017/AudioAppExample_App.vcxproj
+++ b/examples/AudioAppExample/Builds/VisualStudio2017/AudioAppExample_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/AudioAppExample/Builds/VisualStudio2017/AudioAppExample_App.vcxproj.filters b/examples/AudioAppExample/Builds/VisualStudio2017/AudioAppExample_App.vcxproj.filters
index a661cc192a..f161446beb 100644
--- a/examples/AudioAppExample/Builds/VisualStudio2017/AudioAppExample_App.vcxproj.filters
+++ b/examples/AudioAppExample/Builds/VisualStudio2017/AudioAppExample_App.vcxproj.filters
@@ -730,6 +730,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2015/BlocksDrawing_App.vcxproj b/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2015/BlocksDrawing_App.vcxproj
index 3a49d24550..667f972b7e 100644
--- a/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2015/BlocksDrawing_App.vcxproj
+++ b/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2015/BlocksDrawing_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2015/BlocksDrawing_App.vcxproj.filters b/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2015/BlocksDrawing_App.vcxproj.filters
index 2c9300a960..c094aad766 100644
--- a/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2015/BlocksDrawing_App.vcxproj.filters
+++ b/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2015/BlocksDrawing_App.vcxproj.filters
@@ -727,6 +727,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2017/BlocksDrawing_App.vcxproj b/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2017/BlocksDrawing_App.vcxproj
index 9f18c8c14e..e0db144e16 100644
--- a/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2017/BlocksDrawing_App.vcxproj
+++ b/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2017/BlocksDrawing_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2017/BlocksDrawing_App.vcxproj.filters b/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2017/BlocksDrawing_App.vcxproj.filters
index d3cdfd196a..aacd2ea4e5 100644
--- a/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2017/BlocksDrawing_App.vcxproj.filters
+++ b/examples/BLOCKS/BlocksDrawing/Builds/VisualStudio2017/BlocksDrawing_App.vcxproj.filters
@@ -727,6 +727,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2015/BlocksMonitor_App.vcxproj b/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2015/BlocksMonitor_App.vcxproj
index 92a756d37d..8cb1f927d9 100644
--- a/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2015/BlocksMonitor_App.vcxproj
+++ b/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2015/BlocksMonitor_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2015/BlocksMonitor_App.vcxproj.filters b/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2015/BlocksMonitor_App.vcxproj.filters
index 1d591550dd..cef08dfcb9 100644
--- a/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2015/BlocksMonitor_App.vcxproj.filters
+++ b/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2015/BlocksMonitor_App.vcxproj.filters
@@ -724,6 +724,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2017/BlocksMonitor_App.vcxproj b/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2017/BlocksMonitor_App.vcxproj
index efb56ec279..16fa0021a1 100644
--- a/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2017/BlocksMonitor_App.vcxproj
+++ b/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2017/BlocksMonitor_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2017/BlocksMonitor_App.vcxproj.filters b/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2017/BlocksMonitor_App.vcxproj.filters
index 6486432ab8..2a62de8449 100644
--- a/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2017/BlocksMonitor_App.vcxproj.filters
+++ b/examples/BLOCKS/BlocksMonitor/Builds/VisualStudio2017/BlocksMonitor_App.vcxproj.filters
@@ -724,6 +724,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2015/BlocksSynth_App.vcxproj b/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2015/BlocksSynth_App.vcxproj
index 411c5ac65b..2057efdac6 100644
--- a/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2015/BlocksSynth_App.vcxproj
+++ b/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2015/BlocksSynth_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2015/BlocksSynth_App.vcxproj.filters b/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2015/BlocksSynth_App.vcxproj.filters
index e5724a31d3..c416933c6b 100644
--- a/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2015/BlocksSynth_App.vcxproj.filters
+++ b/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2015/BlocksSynth_App.vcxproj.filters
@@ -727,6 +727,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2017/BlocksSynth_App.vcxproj b/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2017/BlocksSynth_App.vcxproj
index 5b2b3fb2d7..08433ece9b 100644
--- a/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2017/BlocksSynth_App.vcxproj
+++ b/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2017/BlocksSynth_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2017/BlocksSynth_App.vcxproj.filters b/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2017/BlocksSynth_App.vcxproj.filters
index ba86be1d9d..fde6baae15 100644
--- a/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2017/BlocksSynth_App.vcxproj.filters
+++ b/examples/BLOCKS/BlocksSynth/Builds/VisualStudio2017/BlocksSynth_App.vcxproj.filters
@@ -727,6 +727,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/BouncingBallWavetableDemo/Builds/VisualStudio2013/BouncingBallWavetableDemo_App.vcxproj b/examples/BouncingBallWavetableDemo/Builds/VisualStudio2013/BouncingBallWavetableDemo_App.vcxproj
index fbbb6443c9..178a68c0f8 100644
--- a/examples/BouncingBallWavetableDemo/Builds/VisualStudio2013/BouncingBallWavetableDemo_App.vcxproj
+++ b/examples/BouncingBallWavetableDemo/Builds/VisualStudio2013/BouncingBallWavetableDemo_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/BouncingBallWavetableDemo/Builds/VisualStudio2013/BouncingBallWavetableDemo_App.vcxproj.filters b/examples/BouncingBallWavetableDemo/Builds/VisualStudio2013/BouncingBallWavetableDemo_App.vcxproj.filters
index 3b00a44935..dd1c811ccb 100644
--- a/examples/BouncingBallWavetableDemo/Builds/VisualStudio2013/BouncingBallWavetableDemo_App.vcxproj.filters
+++ b/examples/BouncingBallWavetableDemo/Builds/VisualStudio2013/BouncingBallWavetableDemo_App.vcxproj.filters
@@ -715,6 +715,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/BouncingBallWavetableDemo/Builds/VisualStudio2017/BouncingBallWavetableDemo_App.vcxproj b/examples/BouncingBallWavetableDemo/Builds/VisualStudio2017/BouncingBallWavetableDemo_App.vcxproj
index 837e8db788..d9195868fe 100644
--- a/examples/BouncingBallWavetableDemo/Builds/VisualStudio2017/BouncingBallWavetableDemo_App.vcxproj
+++ b/examples/BouncingBallWavetableDemo/Builds/VisualStudio2017/BouncingBallWavetableDemo_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/BouncingBallWavetableDemo/Builds/VisualStudio2017/BouncingBallWavetableDemo_App.vcxproj.filters b/examples/BouncingBallWavetableDemo/Builds/VisualStudio2017/BouncingBallWavetableDemo_App.vcxproj.filters
index 16faa2190c..d8accfacdb 100644
--- a/examples/BouncingBallWavetableDemo/Builds/VisualStudio2017/BouncingBallWavetableDemo_App.vcxproj.filters
+++ b/examples/BouncingBallWavetableDemo/Builds/VisualStudio2017/BouncingBallWavetableDemo_App.vcxproj.filters
@@ -715,6 +715,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/DSP module plugin demo/Builds/VisualStudio2015/DSPModulePluginDemo_SharedCode.vcxproj b/examples/DSP module plugin demo/Builds/VisualStudio2015/DSPModulePluginDemo_SharedCode.vcxproj
index 304d726753..00f3f03d8a 100644
--- a/examples/DSP module plugin demo/Builds/VisualStudio2015/DSPModulePluginDemo_SharedCode.vcxproj
+++ b/examples/DSP module plugin demo/Builds/VisualStudio2015/DSPModulePluginDemo_SharedCode.vcxproj
@@ -561,6 +561,9 @@
true
+
+ true
+
true
diff --git a/examples/DSP module plugin demo/Builds/VisualStudio2015/DSPModulePluginDemo_SharedCode.vcxproj.filters b/examples/DSP module plugin demo/Builds/VisualStudio2015/DSPModulePluginDemo_SharedCode.vcxproj.filters
index 3833e9550a..5fc5ab1b4d 100644
--- a/examples/DSP module plugin demo/Builds/VisualStudio2015/DSPModulePluginDemo_SharedCode.vcxproj.filters
+++ b/examples/DSP module plugin demo/Builds/VisualStudio2015/DSPModulePluginDemo_SharedCode.vcxproj.filters
@@ -829,6 +829,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/DSP module plugin demo/Builds/VisualStudio2017/DSPModulePluginDemo_SharedCode.vcxproj b/examples/DSP module plugin demo/Builds/VisualStudio2017/DSPModulePluginDemo_SharedCode.vcxproj
index b9bce50ded..50913fd9a9 100644
--- a/examples/DSP module plugin demo/Builds/VisualStudio2017/DSPModulePluginDemo_SharedCode.vcxproj
+++ b/examples/DSP module plugin demo/Builds/VisualStudio2017/DSPModulePluginDemo_SharedCode.vcxproj
@@ -562,6 +562,9 @@
true
+
+ true
+
true
diff --git a/examples/DSP module plugin demo/Builds/VisualStudio2017/DSPModulePluginDemo_SharedCode.vcxproj.filters b/examples/DSP module plugin demo/Builds/VisualStudio2017/DSPModulePluginDemo_SharedCode.vcxproj.filters
index ee6023d74c..2219f72678 100644
--- a/examples/DSP module plugin demo/Builds/VisualStudio2017/DSPModulePluginDemo_SharedCode.vcxproj.filters
+++ b/examples/DSP module plugin demo/Builds/VisualStudio2017/DSPModulePluginDemo_SharedCode.vcxproj.filters
@@ -829,6 +829,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/DSPDemo/Builds/VisualStudio2017/DSPDemo_App.vcxproj b/examples/DSPDemo/Builds/VisualStudio2017/DSPDemo_App.vcxproj
index ee11a7dae0..236467d904 100644
--- a/examples/DSPDemo/Builds/VisualStudio2017/DSPDemo_App.vcxproj
+++ b/examples/DSPDemo/Builds/VisualStudio2017/DSPDemo_App.vcxproj
@@ -498,6 +498,9 @@
true
+
+ true
+
true
diff --git a/examples/DSPDemo/Builds/VisualStudio2017/DSPDemo_App.vcxproj.filters b/examples/DSPDemo/Builds/VisualStudio2017/DSPDemo_App.vcxproj.filters
index fc38ed9811..9f24cf0869 100644
--- a/examples/DSPDemo/Builds/VisualStudio2017/DSPDemo_App.vcxproj.filters
+++ b/examples/DSPDemo/Builds/VisualStudio2017/DSPDemo_App.vcxproj.filters
@@ -748,6 +748,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/Demo/Builds/Android/app/CMakeLists.txt b/examples/Demo/Builds/Android/app/CMakeLists.txt
index e2207933b1..c7b6cb91ab 100644
--- a/examples/Demo/Builds/Android/app/CMakeLists.txt
+++ b/examples/Demo/Builds/Android/app/CMakeLists.txt
@@ -366,6 +366,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"
+ "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"
@@ -1700,6 +1701,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE)
+set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
diff --git a/examples/Demo/Builds/Android/app/src/main/java/com/roli/jucedemo/JuceDemo.java b/examples/Demo/Builds/Android/app/src/main/java/com/roli/jucedemo/JuceDemo.java
index 6a1ca3bb44..1163919bde 100644
--- a/examples/Demo/Builds/Android/app/src/main/java/com/roli/jucedemo/JuceDemo.java
+++ b/examples/Demo/Builds/Android/app/src/main/java/com/roli/jucedemo/JuceDemo.java
@@ -784,6 +784,7 @@ public class JuceDemo extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -795,10 +796,12 @@ public class JuceDemo extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -865,6 +868,47 @@ public class JuceDemo extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/Demo/Builds/VisualStudio2013/JuceDemo_App.vcxproj b/examples/Demo/Builds/VisualStudio2013/JuceDemo_App.vcxproj
index 055ae4eb3f..a1aca4d414 100644
--- a/examples/Demo/Builds/VisualStudio2013/JuceDemo_App.vcxproj
+++ b/examples/Demo/Builds/VisualStudio2013/JuceDemo_App.vcxproj
@@ -531,6 +531,9 @@
true
+
+ true
+
true
diff --git a/examples/Demo/Builds/VisualStudio2013/JuceDemo_App.vcxproj.filters b/examples/Demo/Builds/VisualStudio2013/JuceDemo_App.vcxproj.filters
index 4dcfe6f1f6..016a55c8ff 100644
--- a/examples/Demo/Builds/VisualStudio2013/JuceDemo_App.vcxproj.filters
+++ b/examples/Demo/Builds/VisualStudio2013/JuceDemo_App.vcxproj.filters
@@ -886,6 +886,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/Demo/Builds/VisualStudio2015/JuceDemo_App.vcxproj b/examples/Demo/Builds/VisualStudio2015/JuceDemo_App.vcxproj
index fb203fde7c..39556f2c4c 100644
--- a/examples/Demo/Builds/VisualStudio2015/JuceDemo_App.vcxproj
+++ b/examples/Demo/Builds/VisualStudio2015/JuceDemo_App.vcxproj
@@ -531,6 +531,9 @@
true
+
+ true
+
true
diff --git a/examples/Demo/Builds/VisualStudio2015/JuceDemo_App.vcxproj.filters b/examples/Demo/Builds/VisualStudio2015/JuceDemo_App.vcxproj.filters
index f59a756d51..379d9c86c4 100644
--- a/examples/Demo/Builds/VisualStudio2015/JuceDemo_App.vcxproj.filters
+++ b/examples/Demo/Builds/VisualStudio2015/JuceDemo_App.vcxproj.filters
@@ -886,6 +886,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/Demo/Builds/VisualStudio2017/JuceDemo_App.vcxproj b/examples/Demo/Builds/VisualStudio2017/JuceDemo_App.vcxproj
index e45f84e762..bf63d08085 100644
--- a/examples/Demo/Builds/VisualStudio2017/JuceDemo_App.vcxproj
+++ b/examples/Demo/Builds/VisualStudio2017/JuceDemo_App.vcxproj
@@ -531,6 +531,9 @@
true
+
+ true
+
true
diff --git a/examples/Demo/Builds/VisualStudio2017/JuceDemo_App.vcxproj.filters b/examples/Demo/Builds/VisualStudio2017/JuceDemo_App.vcxproj.filters
index 5afb382bbc..8a6e37370a 100644
--- a/examples/Demo/Builds/VisualStudio2017/JuceDemo_App.vcxproj.filters
+++ b/examples/Demo/Builds/VisualStudio2017/JuceDemo_App.vcxproj.filters
@@ -886,6 +886,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/Demo/Builds/iOS/Info-App.plist b/examples/Demo/Builds/iOS/Info-App.plist
index 6f4cdf8d0d..0c42bedb9a 100644
--- a/examples/Demo/Builds/iOS/Info-App.plist
+++ b/examples/Demo/Builds/iOS/Info-App.plist
@@ -11,7 +11,7 @@
LSRequiresIPhoneOS
NSMicrophoneUsageDescription
- This app requires microphone input.
+ This is an audio app which requires audio input. If you do not have a USB audio interface connected it will use the microphone.
UIViewControllerBasedStatusBarAppearance
CFBundleExecutable
diff --git a/examples/InAppPurchase/Builds/Android/app/CMakeLists.txt b/examples/InAppPurchase/Builds/Android/app/CMakeLists.txt
index bed92c0477..b2e55de612 100644
--- a/examples/InAppPurchase/Builds/Android/app/CMakeLists.txt
+++ b/examples/InAppPurchase/Builds/Android/app/CMakeLists.txt
@@ -337,6 +337,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"
+ "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"
@@ -1588,6 +1589,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE)
+set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
diff --git a/examples/InAppPurchase/Builds/Android/app/src/main/java/com/roli/juceinapppurchasesample/InAppPurchase.java b/examples/InAppPurchase/Builds/Android/app/src/main/java/com/roli/juceinapppurchasesample/InAppPurchase.java
index 6fc70e80c6..bde8baf529 100644
--- a/examples/InAppPurchase/Builds/Android/app/src/main/java/com/roli/juceinapppurchasesample/InAppPurchase.java
+++ b/examples/InAppPurchase/Builds/Android/app/src/main/java/com/roli/juceinapppurchasesample/InAppPurchase.java
@@ -784,6 +784,7 @@ public class InAppPurchase extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -795,10 +796,12 @@ public class InAppPurchase extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -865,6 +868,47 @@ public class InAppPurchase extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/MPEDemo/Builds/VisualStudio2015/MPEDemo_App.vcxproj b/examples/MPEDemo/Builds/VisualStudio2015/MPEDemo_App.vcxproj
index cdc295db30..e8446e64c4 100644
--- a/examples/MPEDemo/Builds/VisualStudio2015/MPEDemo_App.vcxproj
+++ b/examples/MPEDemo/Builds/VisualStudio2015/MPEDemo_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/MPEDemo/Builds/VisualStudio2015/MPEDemo_App.vcxproj.filters b/examples/MPEDemo/Builds/VisualStudio2015/MPEDemo_App.vcxproj.filters
index 0bf8b1b448..bf10125422 100644
--- a/examples/MPEDemo/Builds/VisualStudio2015/MPEDemo_App.vcxproj.filters
+++ b/examples/MPEDemo/Builds/VisualStudio2015/MPEDemo_App.vcxproj.filters
@@ -727,6 +727,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/MPEDemo/Builds/VisualStudio2017/MPEDemo_App.vcxproj b/examples/MPEDemo/Builds/VisualStudio2017/MPEDemo_App.vcxproj
index 6bcce7e453..2ab93a7dd7 100644
--- a/examples/MPEDemo/Builds/VisualStudio2017/MPEDemo_App.vcxproj
+++ b/examples/MPEDemo/Builds/VisualStudio2017/MPEDemo_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/MPEDemo/Builds/VisualStudio2017/MPEDemo_App.vcxproj.filters b/examples/MPEDemo/Builds/VisualStudio2017/MPEDemo_App.vcxproj.filters
index 72d9343ee4..f2f3a20a85 100644
--- a/examples/MPEDemo/Builds/VisualStudio2017/MPEDemo_App.vcxproj.filters
+++ b/examples/MPEDemo/Builds/VisualStudio2017/MPEDemo_App.vcxproj.filters
@@ -727,6 +727,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/MidiTest/Builds/Android/app/CMakeLists.txt b/examples/MidiTest/Builds/Android/app/CMakeLists.txt
index cbb46a8056..cf1394c97c 100644
--- a/examples/MidiTest/Builds/Android/app/CMakeLists.txt
+++ b/examples/MidiTest/Builds/Android/app/CMakeLists.txt
@@ -313,6 +313,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"
+ "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"
@@ -1472,6 +1473,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE)
+set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
diff --git a/examples/MidiTest/Builds/Android/app/src/main/java/com/yourcompany/miditest/MidiTest.java b/examples/MidiTest/Builds/Android/app/src/main/java/com/yourcompany/miditest/MidiTest.java
index bd4c53f6eb..4a6c9ccff3 100644
--- a/examples/MidiTest/Builds/Android/app/src/main/java/com/yourcompany/miditest/MidiTest.java
+++ b/examples/MidiTest/Builds/Android/app/src/main/java/com/yourcompany/miditest/MidiTest.java
@@ -1716,6 +1716,7 @@ public class MidiTest extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -1727,10 +1728,12 @@ public class MidiTest extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -1797,6 +1800,47 @@ public class MidiTest extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/MidiTest/Builds/VisualStudio2015/MidiTest_App.vcxproj b/examples/MidiTest/Builds/VisualStudio2015/MidiTest_App.vcxproj
index ec4f4ef6e1..53eec637c3 100644
--- a/examples/MidiTest/Builds/VisualStudio2015/MidiTest_App.vcxproj
+++ b/examples/MidiTest/Builds/VisualStudio2015/MidiTest_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/MidiTest/Builds/VisualStudio2015/MidiTest_App.vcxproj.filters b/examples/MidiTest/Builds/VisualStudio2015/MidiTest_App.vcxproj.filters
index 0f74e20858..ab54e39d3e 100644
--- a/examples/MidiTest/Builds/VisualStudio2015/MidiTest_App.vcxproj.filters
+++ b/examples/MidiTest/Builds/VisualStudio2015/MidiTest_App.vcxproj.filters
@@ -694,6 +694,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/MidiTest/Builds/VisualStudio2017/MidiTest_App.vcxproj b/examples/MidiTest/Builds/VisualStudio2017/MidiTest_App.vcxproj
index e76acd623c..deb8b95866 100644
--- a/examples/MidiTest/Builds/VisualStudio2017/MidiTest_App.vcxproj
+++ b/examples/MidiTest/Builds/VisualStudio2017/MidiTest_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/MidiTest/Builds/VisualStudio2017/MidiTest_App.vcxproj.filters b/examples/MidiTest/Builds/VisualStudio2017/MidiTest_App.vcxproj.filters
index db32c24188..33e364c304 100644
--- a/examples/MidiTest/Builds/VisualStudio2017/MidiTest_App.vcxproj.filters
+++ b/examples/MidiTest/Builds/VisualStudio2017/MidiTest_App.vcxproj.filters
@@ -694,6 +694,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt b/examples/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
index 49a97dedb0..0b8523113d 100644
--- a/examples/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
+++ b/examples/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
@@ -316,6 +316,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"
+ "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"
@@ -1550,6 +1551,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE)
+set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
diff --git a/examples/NetworkGraphicsDemo/Builds/Android/app/src/main/java/com/juce/networkgraphicsdemo/JUCENetworkGraphicsDemo.java b/examples/NetworkGraphicsDemo/Builds/Android/app/src/main/java/com/juce/networkgraphicsdemo/JUCENetworkGraphicsDemo.java
index 5ba1197341..9bf2c989a1 100644
--- a/examples/NetworkGraphicsDemo/Builds/Android/app/src/main/java/com/juce/networkgraphicsdemo/JUCENetworkGraphicsDemo.java
+++ b/examples/NetworkGraphicsDemo/Builds/Android/app/src/main/java/com/juce/networkgraphicsdemo/JUCENetworkGraphicsDemo.java
@@ -784,6 +784,7 @@ public class JUCENetworkGraphicsDemo extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -795,10 +796,12 @@ public class JUCENetworkGraphicsDemo extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -865,6 +868,47 @@ public class JUCENetworkGraphicsDemo extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/NetworkGraphicsDemo/Builds/VisualStudio2013/JUCE Network Graphics Demo_App.vcxproj b/examples/NetworkGraphicsDemo/Builds/VisualStudio2013/JUCE Network Graphics Demo_App.vcxproj
index cb1d26dceb..1735fbf1a7 100644
--- a/examples/NetworkGraphicsDemo/Builds/VisualStudio2013/JUCE Network Graphics Demo_App.vcxproj
+++ b/examples/NetworkGraphicsDemo/Builds/VisualStudio2013/JUCE Network Graphics Demo_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/NetworkGraphicsDemo/Builds/VisualStudio2013/JUCE Network Graphics Demo_App.vcxproj.filters b/examples/NetworkGraphicsDemo/Builds/VisualStudio2013/JUCE Network Graphics Demo_App.vcxproj.filters
index 4aca3bc49a..921e00896e 100644
--- a/examples/NetworkGraphicsDemo/Builds/VisualStudio2013/JUCE Network Graphics Demo_App.vcxproj.filters
+++ b/examples/NetworkGraphicsDemo/Builds/VisualStudio2013/JUCE Network Graphics Demo_App.vcxproj.filters
@@ -721,6 +721,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/NetworkGraphicsDemo/Builds/VisualStudio2017/JUCE Network Graphics Demo_App.vcxproj b/examples/NetworkGraphicsDemo/Builds/VisualStudio2017/JUCE Network Graphics Demo_App.vcxproj
index eb8e85e175..4877c77daf 100644
--- a/examples/NetworkGraphicsDemo/Builds/VisualStudio2017/JUCE Network Graphics Demo_App.vcxproj
+++ b/examples/NetworkGraphicsDemo/Builds/VisualStudio2017/JUCE Network Graphics Demo_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/NetworkGraphicsDemo/Builds/VisualStudio2017/JUCE Network Graphics Demo_App.vcxproj.filters b/examples/NetworkGraphicsDemo/Builds/VisualStudio2017/JUCE Network Graphics Demo_App.vcxproj.filters
index a3b87e0b3b..4c74fcc12e 100644
--- a/examples/NetworkGraphicsDemo/Builds/VisualStudio2017/JUCE Network Graphics Demo_App.vcxproj.filters
+++ b/examples/NetworkGraphicsDemo/Builds/VisualStudio2017/JUCE Network Graphics Demo_App.vcxproj.filters
@@ -721,6 +721,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/OSCMonitor/Builds/VisualStudio2015/OSCMonitor_App.vcxproj b/examples/OSCMonitor/Builds/VisualStudio2015/OSCMonitor_App.vcxproj
index 98f817ee6a..add0cd5343 100644
--- a/examples/OSCMonitor/Builds/VisualStudio2015/OSCMonitor_App.vcxproj
+++ b/examples/OSCMonitor/Builds/VisualStudio2015/OSCMonitor_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/OSCMonitor/Builds/VisualStudio2015/OSCMonitor_App.vcxproj.filters b/examples/OSCMonitor/Builds/VisualStudio2015/OSCMonitor_App.vcxproj.filters
index 7e50fc22c5..418dc9278b 100644
--- a/examples/OSCMonitor/Builds/VisualStudio2015/OSCMonitor_App.vcxproj.filters
+++ b/examples/OSCMonitor/Builds/VisualStudio2015/OSCMonitor_App.vcxproj.filters
@@ -718,6 +718,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/OSCMonitor/Builds/VisualStudio2017/OSCMonitor_App.vcxproj b/examples/OSCMonitor/Builds/VisualStudio2017/OSCMonitor_App.vcxproj
index 6392a882f1..945782b792 100644
--- a/examples/OSCMonitor/Builds/VisualStudio2017/OSCMonitor_App.vcxproj
+++ b/examples/OSCMonitor/Builds/VisualStudio2017/OSCMonitor_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/OSCMonitor/Builds/VisualStudio2017/OSCMonitor_App.vcxproj.filters b/examples/OSCMonitor/Builds/VisualStudio2017/OSCMonitor_App.vcxproj.filters
index e3d39a4416..91e0666780 100644
--- a/examples/OSCMonitor/Builds/VisualStudio2017/OSCMonitor_App.vcxproj.filters
+++ b/examples/OSCMonitor/Builds/VisualStudio2017/OSCMonitor_App.vcxproj.filters
@@ -718,6 +718,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/OSCReceiver/Builds/Android/app/src/main/java/com/yourcompany/oscreceiver/OSCReceiver.java b/examples/OSCReceiver/Builds/Android/app/src/main/java/com/yourcompany/oscreceiver/OSCReceiver.java
index de28445ffc..3fb8350af0 100644
--- a/examples/OSCReceiver/Builds/Android/app/src/main/java/com/yourcompany/oscreceiver/OSCReceiver.java
+++ b/examples/OSCReceiver/Builds/Android/app/src/main/java/com/yourcompany/oscreceiver/OSCReceiver.java
@@ -784,6 +784,7 @@ public class OSCReceiver extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -795,10 +796,12 @@ public class OSCReceiver extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -865,6 +868,47 @@ public class OSCReceiver extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/OSCSender/Builds/Android/app/src/main/java/com/yourcompany/oscsender/OSCSender.java b/examples/OSCSender/Builds/Android/app/src/main/java/com/yourcompany/oscsender/OSCSender.java
index 5e2567ce32..9ba4ee7c55 100644
--- a/examples/OSCSender/Builds/Android/app/src/main/java/com/yourcompany/oscsender/OSCSender.java
+++ b/examples/OSCSender/Builds/Android/app/src/main/java/com/yourcompany/oscsender/OSCSender.java
@@ -784,6 +784,7 @@ public class OSCSender extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -795,10 +796,12 @@ public class OSCSender extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -865,6 +868,47 @@ public class OSCSender extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/OpenGLAppExample/Builds/VisualStudio2017/OpenGLAppExample_App.vcxproj b/examples/OpenGLAppExample/Builds/VisualStudio2017/OpenGLAppExample_App.vcxproj
index 934a71b9c9..b1e3e01e54 100644
--- a/examples/OpenGLAppExample/Builds/VisualStudio2017/OpenGLAppExample_App.vcxproj
+++ b/examples/OpenGLAppExample/Builds/VisualStudio2017/OpenGLAppExample_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/OpenGLAppExample/Builds/VisualStudio2017/OpenGLAppExample_App.vcxproj.filters b/examples/OpenGLAppExample/Builds/VisualStudio2017/OpenGLAppExample_App.vcxproj.filters
index 20c2e383b2..b0408c8361 100644
--- a/examples/OpenGLAppExample/Builds/VisualStudio2017/OpenGLAppExample_App.vcxproj.filters
+++ b/examples/OpenGLAppExample/Builds/VisualStudio2017/OpenGLAppExample_App.vcxproj.filters
@@ -718,6 +718,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PluckedStringsDemo/Builds/VisualStudio2013/PluckedStringsDemo_App.vcxproj b/examples/PluckedStringsDemo/Builds/VisualStudio2013/PluckedStringsDemo_App.vcxproj
index 5b704adb9a..9d85d0e5c2 100644
--- a/examples/PluckedStringsDemo/Builds/VisualStudio2013/PluckedStringsDemo_App.vcxproj
+++ b/examples/PluckedStringsDemo/Builds/VisualStudio2013/PluckedStringsDemo_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/PluckedStringsDemo/Builds/VisualStudio2013/PluckedStringsDemo_App.vcxproj.filters b/examples/PluckedStringsDemo/Builds/VisualStudio2013/PluckedStringsDemo_App.vcxproj.filters
index 45beae555b..c7f75ffdb2 100644
--- a/examples/PluckedStringsDemo/Builds/VisualStudio2013/PluckedStringsDemo_App.vcxproj.filters
+++ b/examples/PluckedStringsDemo/Builds/VisualStudio2013/PluckedStringsDemo_App.vcxproj.filters
@@ -691,6 +691,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PluckedStringsDemo/Builds/VisualStudio2017/PluckedStringsDemo_App.vcxproj b/examples/PluckedStringsDemo/Builds/VisualStudio2017/PluckedStringsDemo_App.vcxproj
index 84595a0937..f653ddff5c 100644
--- a/examples/PluckedStringsDemo/Builds/VisualStudio2017/PluckedStringsDemo_App.vcxproj
+++ b/examples/PluckedStringsDemo/Builds/VisualStudio2017/PluckedStringsDemo_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/PluckedStringsDemo/Builds/VisualStudio2017/PluckedStringsDemo_App.vcxproj.filters b/examples/PluckedStringsDemo/Builds/VisualStudio2017/PluckedStringsDemo_App.vcxproj.filters
index b020464e5d..00200a8c55 100644
--- a/examples/PluckedStringsDemo/Builds/VisualStudio2017/PluckedStringsDemo_App.vcxproj.filters
+++ b/examples/PluckedStringsDemo/Builds/VisualStudio2017/PluckedStringsDemo_App.vcxproj.filters
@@ -691,6 +691,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2015/Arpeggiator_SharedCode.vcxproj b/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2015/Arpeggiator_SharedCode.vcxproj
index b7c560c3be..39b604140b 100644
--- a/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2015/Arpeggiator_SharedCode.vcxproj
+++ b/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2015/Arpeggiator_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2015/Arpeggiator_SharedCode.vcxproj.filters b/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2015/Arpeggiator_SharedCode.vcxproj.filters
index 11707639cf..2679fe27e3 100644
--- a/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2015/Arpeggiator_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2015/Arpeggiator_SharedCode.vcxproj.filters
@@ -808,6 +808,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2017/Arpeggiator_SharedCode.vcxproj b/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2017/Arpeggiator_SharedCode.vcxproj
index 9d84dfaf94..299978393d 100644
--- a/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2017/Arpeggiator_SharedCode.vcxproj
+++ b/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2017/Arpeggiator_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2017/Arpeggiator_SharedCode.vcxproj.filters b/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2017/Arpeggiator_SharedCode.vcxproj.filters
index dde61f89f8..e75dde42fb 100644
--- a/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2017/Arpeggiator_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/Arpeggiator/Builds/VisualStudio2017/Arpeggiator_SharedCode.vcxproj.filters
@@ -808,6 +808,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2015/GainPlugIn_SharedCode.vcxproj b/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2015/GainPlugIn_SharedCode.vcxproj
index 34a7e4526b..5462768ed2 100644
--- a/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2015/GainPlugIn_SharedCode.vcxproj
+++ b/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2015/GainPlugIn_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2015/GainPlugIn_SharedCode.vcxproj.filters b/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2015/GainPlugIn_SharedCode.vcxproj.filters
index 1a24d4eec6..a8a02710a3 100644
--- a/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2015/GainPlugIn_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2015/GainPlugIn_SharedCode.vcxproj.filters
@@ -808,6 +808,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2017/GainPlugIn_SharedCode.vcxproj b/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2017/GainPlugIn_SharedCode.vcxproj
index a6acf75f15..47165a2560 100644
--- a/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2017/GainPlugIn_SharedCode.vcxproj
+++ b/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2017/GainPlugIn_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2017/GainPlugIn_SharedCode.vcxproj.filters b/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2017/GainPlugIn_SharedCode.vcxproj.filters
index a62f2e1c2b..548043693f 100644
--- a/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2017/GainPlugIn_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/GainPlugIn/Builds/VisualStudio2017/GainPlugIn_SharedCode.vcxproj.filters
@@ -808,6 +808,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/InterAppAudioEffect/Builds/iOS/Info-Standalone_Plugin.plist b/examples/PlugInSamples/InterAppAudioEffect/Builds/iOS/Info-Standalone_Plugin.plist
index ad6b738d7a..0537fbf259 100644
--- a/examples/PlugInSamples/InterAppAudioEffect/Builds/iOS/Info-Standalone_Plugin.plist
+++ b/examples/PlugInSamples/InterAppAudioEffect/Builds/iOS/Info-Standalone_Plugin.plist
@@ -6,7 +6,7 @@
LSRequiresIPhoneOS
NSMicrophoneUsageDescription
- This app requires microphone input.
+ This is an audio app which requires audio input. If you do not have a USB audio interface connected it will use the microphone.
UIViewControllerBasedStatusBarAppearance
CFBundleExecutable
diff --git a/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2015/MultiOutSynth_SharedCode.vcxproj b/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2015/MultiOutSynth_SharedCode.vcxproj
index f4d61c553b..358b878277 100644
--- a/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2015/MultiOutSynth_SharedCode.vcxproj
+++ b/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2015/MultiOutSynth_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2015/MultiOutSynth_SharedCode.vcxproj.filters b/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2015/MultiOutSynth_SharedCode.vcxproj.filters
index efc86b646e..3c3826d964 100644
--- a/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2015/MultiOutSynth_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2015/MultiOutSynth_SharedCode.vcxproj.filters
@@ -811,6 +811,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2017/MultiOutSynth_SharedCode.vcxproj b/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2017/MultiOutSynth_SharedCode.vcxproj
index f8e66ea3aa..6d38ec4497 100644
--- a/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2017/MultiOutSynth_SharedCode.vcxproj
+++ b/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2017/MultiOutSynth_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2017/MultiOutSynth_SharedCode.vcxproj.filters b/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2017/MultiOutSynth_SharedCode.vcxproj.filters
index 2397404651..ef458fc789 100644
--- a/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2017/MultiOutSynth_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/MultiOutSynth/Builds/VisualStudio2017/MultiOutSynth_SharedCode.vcxproj.filters
@@ -811,6 +811,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2015/NoiseGate_SharedCode.vcxproj b/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2015/NoiseGate_SharedCode.vcxproj
index 5e6b106d36..4d76afaf5d 100644
--- a/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2015/NoiseGate_SharedCode.vcxproj
+++ b/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2015/NoiseGate_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2015/NoiseGate_SharedCode.vcxproj.filters b/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2015/NoiseGate_SharedCode.vcxproj.filters
index 59926e2298..74f6a60082 100644
--- a/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2015/NoiseGate_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2015/NoiseGate_SharedCode.vcxproj.filters
@@ -808,6 +808,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2017/NoiseGate_SharedCode.vcxproj b/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2017/NoiseGate_SharedCode.vcxproj
index f8632721f0..f5d9f39d4b 100644
--- a/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2017/NoiseGate_SharedCode.vcxproj
+++ b/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2017/NoiseGate_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2017/NoiseGate_SharedCode.vcxproj.filters b/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2017/NoiseGate_SharedCode.vcxproj.filters
index 2f2406199f..3d7b9873d4 100644
--- a/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2017/NoiseGate_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/NoiseGate/Builds/VisualStudio2017/NoiseGate_SharedCode.vcxproj.filters
@@ -808,6 +808,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/Surround/Builds/VisualStudio2015/Surround_SharedCode.vcxproj b/examples/PlugInSamples/Surround/Builds/VisualStudio2015/Surround_SharedCode.vcxproj
index 50d49d2469..7b37ece53f 100644
--- a/examples/PlugInSamples/Surround/Builds/VisualStudio2015/Surround_SharedCode.vcxproj
+++ b/examples/PlugInSamples/Surround/Builds/VisualStudio2015/Surround_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/Surround/Builds/VisualStudio2015/Surround_SharedCode.vcxproj.filters b/examples/PlugInSamples/Surround/Builds/VisualStudio2015/Surround_SharedCode.vcxproj.filters
index 7965b7be19..99abc2a02c 100644
--- a/examples/PlugInSamples/Surround/Builds/VisualStudio2015/Surround_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/Surround/Builds/VisualStudio2015/Surround_SharedCode.vcxproj.filters
@@ -808,6 +808,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PlugInSamples/Surround/Builds/VisualStudio2017/Surround_SharedCode.vcxproj b/examples/PlugInSamples/Surround/Builds/VisualStudio2017/Surround_SharedCode.vcxproj
index 8ff16e4197..277697cac3 100644
--- a/examples/PlugInSamples/Surround/Builds/VisualStudio2017/Surround_SharedCode.vcxproj
+++ b/examples/PlugInSamples/Surround/Builds/VisualStudio2017/Surround_SharedCode.vcxproj
@@ -560,6 +560,9 @@
true
+
+ true
+
true
diff --git a/examples/PlugInSamples/Surround/Builds/VisualStudio2017/Surround_SharedCode.vcxproj.filters b/examples/PlugInSamples/Surround/Builds/VisualStudio2017/Surround_SharedCode.vcxproj.filters
index 83a1c4f0d0..5987bbdefe 100644
--- a/examples/PlugInSamples/Surround/Builds/VisualStudio2017/Surround_SharedCode.vcxproj.filters
+++ b/examples/PlugInSamples/Surround/Builds/VisualStudio2017/Surround_SharedCode.vcxproj.filters
@@ -808,6 +808,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/PushNotificationsDemo/Builds/Android/app/CMakeLists.txt b/examples/PushNotificationsDemo/Builds/Android/app/CMakeLists.txt
index 94c4d2aa44..aede253d9d 100644
--- a/examples/PushNotificationsDemo/Builds/Android/app/CMakeLists.txt
+++ b/examples/PushNotificationsDemo/Builds/Android/app/CMakeLists.txt
@@ -333,6 +333,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"
+ "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"
@@ -1529,6 +1530,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE)
+set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
diff --git a/examples/PushNotificationsDemo/Builds/Android/app/src/main/java/com/juce/pushnotificationsdemo/PushNotificationsDemo.java b/examples/PushNotificationsDemo/Builds/Android/app/src/main/java/com/juce/pushnotificationsdemo/PushNotificationsDemo.java
index 670f2b1431..a727e78131 100644
--- a/examples/PushNotificationsDemo/Builds/Android/app/src/main/java/com/juce/pushnotificationsdemo/PushNotificationsDemo.java
+++ b/examples/PushNotificationsDemo/Builds/Android/app/src/main/java/com/juce/pushnotificationsdemo/PushNotificationsDemo.java
@@ -1716,6 +1716,7 @@ public class PushNotificationsDemo extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -1727,10 +1728,12 @@ public class PushNotificationsDemo extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -1797,6 +1800,47 @@ public class PushNotificationsDemo extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/PushNotificationsDemo/Builds/VisualStudio2015/PushNotificationsDemo_App.vcxproj b/examples/PushNotificationsDemo/Builds/VisualStudio2015/PushNotificationsDemo_App.vcxproj
index de73551441..da1eae2d9b 100644
--- a/examples/PushNotificationsDemo/Builds/VisualStudio2015/PushNotificationsDemo_App.vcxproj
+++ b/examples/PushNotificationsDemo/Builds/VisualStudio2015/PushNotificationsDemo_App.vcxproj
@@ -489,6 +489,9 @@
true
+
+ true
+
true
diff --git a/examples/PushNotificationsDemo/Builds/VisualStudio2015/PushNotificationsDemo_App.vcxproj.filters b/examples/PushNotificationsDemo/Builds/VisualStudio2015/PushNotificationsDemo_App.vcxproj.filters
index 3e7228ea13..f6a553f7a0 100644
--- a/examples/PushNotificationsDemo/Builds/VisualStudio2015/PushNotificationsDemo_App.vcxproj.filters
+++ b/examples/PushNotificationsDemo/Builds/VisualStudio2015/PushNotificationsDemo_App.vcxproj.filters
@@ -712,6 +712,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/SimpleFFTExample/Builds/VisualStudio2013/SimpleFFTExample_App.vcxproj b/examples/SimpleFFTExample/Builds/VisualStudio2013/SimpleFFTExample_App.vcxproj
index 28f9f5f056..b468dcee40 100644
--- a/examples/SimpleFFTExample/Builds/VisualStudio2013/SimpleFFTExample_App.vcxproj
+++ b/examples/SimpleFFTExample/Builds/VisualStudio2013/SimpleFFTExample_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/SimpleFFTExample/Builds/VisualStudio2013/SimpleFFTExample_App.vcxproj.filters b/examples/SimpleFFTExample/Builds/VisualStudio2013/SimpleFFTExample_App.vcxproj.filters
index 42e99e5a96..36fd0a8ae3 100644
--- a/examples/SimpleFFTExample/Builds/VisualStudio2013/SimpleFFTExample_App.vcxproj.filters
+++ b/examples/SimpleFFTExample/Builds/VisualStudio2013/SimpleFFTExample_App.vcxproj.filters
@@ -712,6 +712,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/SimpleFFTExample/Builds/VisualStudio2017/SimpleFFTExample_App.vcxproj b/examples/SimpleFFTExample/Builds/VisualStudio2017/SimpleFFTExample_App.vcxproj
index 17f423bf1f..01d03fd340 100644
--- a/examples/SimpleFFTExample/Builds/VisualStudio2017/SimpleFFTExample_App.vcxproj
+++ b/examples/SimpleFFTExample/Builds/VisualStudio2017/SimpleFFTExample_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/examples/SimpleFFTExample/Builds/VisualStudio2017/SimpleFFTExample_App.vcxproj.filters b/examples/SimpleFFTExample/Builds/VisualStudio2017/SimpleFFTExample_App.vcxproj.filters
index dc02e8e03f..942fa96a85 100644
--- a/examples/SimpleFFTExample/Builds/VisualStudio2017/SimpleFFTExample_App.vcxproj.filters
+++ b/examples/SimpleFFTExample/Builds/VisualStudio2017/SimpleFFTExample_App.vcxproj.filters
@@ -712,6 +712,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/audio plugin demo/Builds/Android/app/CMakeLists.txt b/examples/audio plugin demo/Builds/Android/app/CMakeLists.txt
index 96dda9cce6..8b0d56e94c 100644
--- a/examples/audio plugin demo/Builds/Android/app/CMakeLists.txt
+++ b/examples/audio plugin demo/Builds/Android/app/CMakeLists.txt
@@ -413,6 +413,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"
+ "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"
@@ -1674,6 +1675,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE)
+set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
diff --git a/examples/audio plugin demo/Builds/Android/app/src/main/java/com/juce/jucedemoplugin/JuceDemoPlugin.java b/examples/audio plugin demo/Builds/Android/app/src/main/java/com/juce/jucedemoplugin/JuceDemoPlugin.java
index 9de833fd1a..510ad37743 100644
--- a/examples/audio plugin demo/Builds/Android/app/src/main/java/com/juce/jucedemoplugin/JuceDemoPlugin.java
+++ b/examples/audio plugin demo/Builds/Android/app/src/main/java/com/juce/jucedemoplugin/JuceDemoPlugin.java
@@ -1716,6 +1716,7 @@ public class JuceDemoPlugin extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -1727,10 +1728,12 @@ public class JuceDemoPlugin extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -1797,6 +1800,47 @@ public class JuceDemoPlugin extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/examples/audio plugin demo/Builds/VisualStudio2015/JuceDemoPlugin_SharedCode.vcxproj b/examples/audio plugin demo/Builds/VisualStudio2015/JuceDemoPlugin_SharedCode.vcxproj
index 6bf0c57782..b8f4c7fd4f 100644
--- a/examples/audio plugin demo/Builds/VisualStudio2015/JuceDemoPlugin_SharedCode.vcxproj
+++ b/examples/audio plugin demo/Builds/VisualStudio2015/JuceDemoPlugin_SharedCode.vcxproj
@@ -561,6 +561,9 @@
true
+
+ true
+
true
diff --git a/examples/audio plugin demo/Builds/VisualStudio2015/JuceDemoPlugin_SharedCode.vcxproj.filters b/examples/audio plugin demo/Builds/VisualStudio2015/JuceDemoPlugin_SharedCode.vcxproj.filters
index c19304c3a2..8ad0977ce7 100644
--- a/examples/audio plugin demo/Builds/VisualStudio2015/JuceDemoPlugin_SharedCode.vcxproj.filters
+++ b/examples/audio plugin demo/Builds/VisualStudio2015/JuceDemoPlugin_SharedCode.vcxproj.filters
@@ -787,6 +787,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/audio plugin demo/Builds/VisualStudio2017/JuceDemoPlugin_SharedCode.vcxproj b/examples/audio plugin demo/Builds/VisualStudio2017/JuceDemoPlugin_SharedCode.vcxproj
index 6c1e220ca5..2b61331535 100644
--- a/examples/audio plugin demo/Builds/VisualStudio2017/JuceDemoPlugin_SharedCode.vcxproj
+++ b/examples/audio plugin demo/Builds/VisualStudio2017/JuceDemoPlugin_SharedCode.vcxproj
@@ -561,6 +561,9 @@
true
+
+ true
+
true
diff --git a/examples/audio plugin demo/Builds/VisualStudio2017/JuceDemoPlugin_SharedCode.vcxproj.filters b/examples/audio plugin demo/Builds/VisualStudio2017/JuceDemoPlugin_SharedCode.vcxproj.filters
index a2a4348692..9fcf0ab4b6 100644
--- a/examples/audio plugin demo/Builds/VisualStudio2017/JuceDemoPlugin_SharedCode.vcxproj.filters
+++ b/examples/audio plugin demo/Builds/VisualStudio2017/JuceDemoPlugin_SharedCode.vcxproj.filters
@@ -787,6 +787,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/audio plugin demo/Builds/iOS/Info-AUv3_AppExtension.plist b/examples/audio plugin demo/Builds/iOS/Info-AUv3_AppExtension.plist
index 77cc04d070..48b256cf96 100644
--- a/examples/audio plugin demo/Builds/iOS/Info-AUv3_AppExtension.plist
+++ b/examples/audio plugin demo/Builds/iOS/Info-AUv3_AppExtension.plist
@@ -6,7 +6,7 @@
LSRequiresIPhoneOS
NSMicrophoneUsageDescription
- This app requires microphone input.
+ This is an audio app which requires audio input. If you do not have a USB audio interface connected it will use the microphone.
CFBundleExecutable
${EXECUTABLE_NAME}
CFBundleIdentifier
diff --git a/examples/audio plugin demo/Builds/iOS/Info-Standalone_Plugin.plist b/examples/audio plugin demo/Builds/iOS/Info-Standalone_Plugin.plist
index ecd4984aa0..f4fc85d55b 100644
--- a/examples/audio plugin demo/Builds/iOS/Info-Standalone_Plugin.plist
+++ b/examples/audio plugin demo/Builds/iOS/Info-Standalone_Plugin.plist
@@ -6,7 +6,7 @@
LSRequiresIPhoneOS
NSMicrophoneUsageDescription
- This app requires microphone input.
+ This is an audio app which requires audio input. If you do not have a USB audio interface connected it will use the microphone.
UIViewControllerBasedStatusBarAppearance
CFBundleExecutable
diff --git a/examples/audio plugin host/Builds/VisualStudio2013/Plugin Host_App.vcxproj b/examples/audio plugin host/Builds/VisualStudio2013/Plugin Host_App.vcxproj
index 1795d34ae5..b3a65c7fed 100644
--- a/examples/audio plugin host/Builds/VisualStudio2013/Plugin Host_App.vcxproj
+++ b/examples/audio plugin host/Builds/VisualStudio2013/Plugin Host_App.vcxproj
@@ -493,6 +493,9 @@
true
+
+ true
+
true
diff --git a/examples/audio plugin host/Builds/VisualStudio2013/Plugin Host_App.vcxproj.filters b/examples/audio plugin host/Builds/VisualStudio2013/Plugin Host_App.vcxproj.filters
index 89e813351e..d874d441ca 100644
--- a/examples/audio plugin host/Builds/VisualStudio2013/Plugin Host_App.vcxproj.filters
+++ b/examples/audio plugin host/Builds/VisualStudio2013/Plugin Host_App.vcxproj.filters
@@ -739,6 +739,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/audio plugin host/Builds/VisualStudio2015/Plugin Host_App.vcxproj b/examples/audio plugin host/Builds/VisualStudio2015/Plugin Host_App.vcxproj
index b0d97bb662..a521e90e91 100644
--- a/examples/audio plugin host/Builds/VisualStudio2015/Plugin Host_App.vcxproj
+++ b/examples/audio plugin host/Builds/VisualStudio2015/Plugin Host_App.vcxproj
@@ -493,6 +493,9 @@
true
+
+ true
+
true
diff --git a/examples/audio plugin host/Builds/VisualStudio2015/Plugin Host_App.vcxproj.filters b/examples/audio plugin host/Builds/VisualStudio2015/Plugin Host_App.vcxproj.filters
index 6604e733d7..578699b4a2 100644
--- a/examples/audio plugin host/Builds/VisualStudio2015/Plugin Host_App.vcxproj.filters
+++ b/examples/audio plugin host/Builds/VisualStudio2015/Plugin Host_App.vcxproj.filters
@@ -739,6 +739,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/examples/audio plugin host/Builds/VisualStudio2017/Plugin Host_App.vcxproj b/examples/audio plugin host/Builds/VisualStudio2017/Plugin Host_App.vcxproj
index 7b4307ca4b..6192957926 100644
--- a/examples/audio plugin host/Builds/VisualStudio2017/Plugin Host_App.vcxproj
+++ b/examples/audio plugin host/Builds/VisualStudio2017/Plugin Host_App.vcxproj
@@ -493,6 +493,9 @@
true
+
+ true
+
true
diff --git a/examples/audio plugin host/Builds/VisualStudio2017/Plugin Host_App.vcxproj.filters b/examples/audio plugin host/Builds/VisualStudio2017/Plugin Host_App.vcxproj.filters
index a7827ac056..c0fbc23ea4 100644
--- a/examples/audio plugin host/Builds/VisualStudio2017/Plugin Host_App.vcxproj.filters
+++ b/examples/audio plugin host/Builds/VisualStudio2017/Plugin Host_App.vcxproj.filters
@@ -739,6 +739,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
index 5f48cec592..7b0192189c 100644
--- a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
+++ b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
@@ -312,6 +312,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"
"../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"
+ "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"
"../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"
@@ -1471,6 +1472,7 @@ set_source_files_properties("../../../../../modules/juce_audio_processors/format
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE)
+set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
diff --git a/extras/AudioPerformanceTest/Builds/Android/app/src/main/java/com/juce/audioperformancetest/AudioPerformanceTest.java b/extras/AudioPerformanceTest/Builds/Android/app/src/main/java/com/juce/audioperformancetest/AudioPerformanceTest.java
index b462ce00cf..a7e2360225 100644
--- a/extras/AudioPerformanceTest/Builds/Android/app/src/main/java/com/juce/audioperformancetest/AudioPerformanceTest.java
+++ b/extras/AudioPerformanceTest/Builds/Android/app/src/main/java/com/juce/audioperformancetest/AudioPerformanceTest.java
@@ -1716,6 +1716,7 @@ public class AudioPerformanceTest extends Activity
private native void handleKeyDown (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 handleKeyboardHidden (long host);
public void showKeyboard (String type)
{
@@ -1727,10 +1728,12 @@ public class AudioPerformanceTest extends Activity
{
imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
imm.setInputMethod (getWindowToken(), type);
+ keyboardDismissListener.startListening();
}
else
{
imm.hideSoftInputFromWindow (getWindowToken(), 0);
+ keyboardDismissListener.stopListening();
}
}
}
@@ -1797,6 +1800,47 @@ public class AudioPerformanceTest extends Activity
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 KeyboardDismissListener keyboardDismissListener = new KeyboardDismissListener(this);
+
// this is here to make keyboard entry work on a Galaxy Tab2 10.1
@Override
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2015/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2015/AudioPerformanceTest_App.vcxproj
index dee810c503..eb763a8ae6 100644
--- a/extras/AudioPerformanceTest/Builds/VisualStudio2015/AudioPerformanceTest_App.vcxproj
+++ b/extras/AudioPerformanceTest/Builds/VisualStudio2015/AudioPerformanceTest_App.vcxproj
@@ -488,6 +488,9 @@
true
+
+ true
+
true
diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2015/AudioPerformanceTest_App.vcxproj.filters b/extras/AudioPerformanceTest/Builds/VisualStudio2015/AudioPerformanceTest_App.vcxproj.filters
index 94fdd65b6a..80d6fb66c4 100644
--- a/extras/AudioPerformanceTest/Builds/VisualStudio2015/AudioPerformanceTest_App.vcxproj.filters
+++ b/extras/AudioPerformanceTest/Builds/VisualStudio2015/AudioPerformanceTest_App.vcxproj.filters
@@ -691,6 +691,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj
index be0c9abb45..5cc85907e1 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj
+++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj
@@ -502,6 +502,9 @@
true
+
+ true
+
true
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters
index ef277f2788..e31fefa4be 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters
+++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters
@@ -805,6 +805,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors
diff --git a/extras/windows dll/Builds/VisualStudio2017/juce_dll_StaticLibrary.vcxproj b/extras/windows dll/Builds/VisualStudio2017/juce_dll_StaticLibrary.vcxproj
index 759c23a6a9..f1d157b49d 100644
--- a/extras/windows dll/Builds/VisualStudio2017/juce_dll_StaticLibrary.vcxproj
+++ b/extras/windows dll/Builds/VisualStudio2017/juce_dll_StaticLibrary.vcxproj
@@ -487,6 +487,9 @@
true
+
+ true
+
true
diff --git a/extras/windows dll/Builds/VisualStudio2017/juce_dll_StaticLibrary.vcxproj.filters b/extras/windows dll/Builds/VisualStudio2017/juce_dll_StaticLibrary.vcxproj.filters
index d2dae0739f..9645435e59 100644
--- a/extras/windows dll/Builds/VisualStudio2017/juce_dll_StaticLibrary.vcxproj.filters
+++ b/extras/windows dll/Builds/VisualStudio2017/juce_dll_StaticLibrary.vcxproj.filters
@@ -718,6 +718,9 @@
JUCE Modules\juce_audio_processors\format_types
+
+ JUCE Modules\juce_audio_processors\processors
+
JUCE Modules\juce_audio_processors\processors