Thanks for the info!
Haven’t got time right now to go through the whole android build rigmarole and try it, but surely…
[code] //==============================================================================
static AndroidComponentPeer* findPeerForJavaView (JNIEnv* env, jobject viewToFind)
{
for (int i = getNumPeers(); --i >= 0;)
{
AndroidComponentPeer* const ap = static_cast <AndroidComponentPeer*> (getPeer(i));
jassert (dynamic_cast <AndroidComponentPeer*> (getPeer(i)) != nullptr);
if (env->IsSameObject (ap->view.get(), viewToFind))
return ap;
}
return nullptr;
}
[/code]
and…
#define JUCE_VIEW_CALLBACK(returnType, javaMethodName, params, juceMethodInvocation)
JUCE_JNI_CALLBACK (ComponentPeerView, javaMethodName, returnType, params)
{
AndroidComponentPeer* const peer = AndroidComponentPeer::findPeerForJavaView (env, view);
if (peer != nullptr)
peer->juceMethodInvocation;
}
JUCE_VIEW_CALLBACK (void, handlePaint, (JNIEnv* env, jobject view, jobject canvas), handlePaintCallback (env, canvas))
JUCE_VIEW_CALLBACK (void, handleMouseDown, (JNIEnv* env, jobject view, jfloat x, jfloat y, jlong time), handleMouseDownCallback ((float) x, (float) y, (int64) time))
JUCE_VIEW_CALLBACK (void, handleMouseDrag, (JNIEnv* env, jobject view, jfloat x, jfloat y, jlong time), handleMouseDragCallback ((float) x, (float) y, (int64) time))
JUCE_VIEW_CALLBACK (void, handleMouseUp, (JNIEnv* env, jobject view, jfloat x, jfloat y, jlong time), handleMouseUpCallback ((float) x, (float) y, (int64) time))
JUCE_VIEW_CALLBACK (void, viewSizeChanged, (JNIEnv* env, jobject view), handleMovedOrResized())
JUCE_VIEW_CALLBACK (void, focusChanged, (JNIEnv* env, jobject view, jboolean hasFocus), handleFocusChangeCallback (hasFocus))
?