bool RenderHandler::GetScreenPoint(jobject browser, int viewX, int viewY, int& screenX, int& screenY) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jobject jreturn = NULL; jobject point_obj = NewJNIPoint(env, viewX, viewY); if (!point_obj) return false; JNI_CALL_METHOD(env, jhandler_, "getScreenPoint", "(Lorg/cef/browser/CefBrowser;Ljava/awt/Point;)Ljava/awt/Point;", Object, jreturn, browser, point_obj); if (jreturn) { GetJNIPoint(env, jreturn, &screenX, &screenY); env->DeleteLocalRef(jreturn); return true; } return false; }
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1DragSourceEndedAt (JNIEnv *env, jobject obj, jobject pos, jint operation) { CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj); int x, y; GetJNIPoint(env, pos, &x, &y); browser->GetHost()->DragSourceEndedAt(x, y, (CefBrowserHost::DragOperationsMask)operation); }
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1DragTargetDrop (JNIEnv *env, jobject obj, jobject pos, jint jmodifiers) { jclass cls = env->FindClass("java/awt/event/MouseEvent"); if (!cls) return; CefMouseEvent cef_event; GetJNIPoint(env, pos, &cef_event.x, &cef_event.y); cef_event.modifiers = GetCefModifiers(env, cls, jmodifiers); CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj); browser->GetHost()->DragTargetDrop(cef_event); }
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1DragTargetDragEnter (JNIEnv *env, jobject obj, jobject jdragData, jobject pos, jint jmodifiers, jint allowedOps) { CefRefPtr<CefDragData> drag_data = GetCefFromJNIObject<CefDragData>(env, jdragData, "CefDragData"); if (!drag_data.get()) return; jclass cls = env->FindClass("java/awt/event/MouseEvent"); if (!cls) return; CefMouseEvent cef_event; GetJNIPoint(env, pos, &cef_event.x, &cef_event.y); cef_event.modifiers = GetCefModifiers(env, cls, jmodifiers); CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj); browser->GetHost()->DragTargetDragEnter(drag_data, cef_event, (CefBrowserHost::DragOperationsMask)allowedOps); }