mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-19 01:27:18 -04:00
Prepare the AWT clipboard
This commit is contained in:
parent
54d09b53a1
commit
72ef1808f9
@ -34,4 +34,5 @@ public class AWTInputBridge {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static native void nativeSendData(int type, int i1, int i2, int i3, int i4);
|
public static native void nativeSendData(int type, int i1, int i2, int i3, int i4);
|
||||||
|
public static native void nativePutClipboard(String data);
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ static JavaVM* dalvikJavaVMPtr;
|
|||||||
static JavaVM* runtimeJavaVMPtr;
|
static JavaVM* runtimeJavaVMPtr;
|
||||||
static JNIEnv* runtimeJNIEnvPtr_GRAPHICS;
|
static JNIEnv* runtimeJNIEnvPtr_GRAPHICS;
|
||||||
static JNIEnv* runtimeJNIEnvPtr_INPUT;
|
static JNIEnv* runtimeJNIEnvPtr_INPUT;
|
||||||
|
static JNIEnv* runtimeJNIEnvPtr_CLIPBOARD;
|
||||||
jclass class_CTCScreen;
|
jclass class_CTCScreen;
|
||||||
jmethodID method_GetRGB;
|
jmethodID method_GetRGB;
|
||||||
|
|
||||||
@ -89,3 +89,32 @@ JNIEXPORT jintArray JNICALL Java_net_kdt_pojavlaunch_utils_JREUtils_renderAWTScr
|
|||||||
|
|
||||||
return androidRgbArray;
|
return androidRgbArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
jobject clipboard = NULL;
|
||||||
|
jclass clipboardClass;
|
||||||
|
static jobject obtainClipboard(JNIEnv *env) {
|
||||||
|
jclass toolkitClass = (*runtimeJNIEnvPtr_CLIPBOARD)->FindClass(runtimeJNIEnvPtr_CLIPBOARD,"java/awt/Toolkit");
|
||||||
|
jobject toolkit = (*runtimeJNIEnvPtr_CLIPBOARD)->CallStaticObjectMethod(runtimeJNIEnvPtr_CLIPBOARD,toolkitClass,(*runtimeJNIEnvPtr_CLIPBOARD)->GetStaticMethodID(runtimeJNIEnvPtr_CLIPBOARD,toolkitClass,"getDefaultToolkit", "()Ljava/awt/Toolkit;"));
|
||||||
|
clipboardClass = (*runtimeJNIEnvPtr_CLIPBOARD)->NewGlobalRef(runtimeJNIEnvPtr_CLIPBOARD,(*runtimeJNIEnvPtr_CLIPBOARD)->FindClass(runtimeJNIEnvPtr_CLIPBOARD,"java/awt/datatransfer/Clipboard"));
|
||||||
|
clipboard = (*runtimeJNIEnvPtr_CLIPBOARD)->NewGlobalRef(runtimeJNIEnvPtr_CLIPBOARD,(*runtimeJNIEnvPtr_CLIPBOARD)->CallObjectMethod(runtimeJNIEnvPtr_CLIPBOARD,toolkit,(*runtimeJNIEnvPtr_CLIPBOARD)->GetMethodID(runtimeJNIEnvPtr_CLIPBOARD,toolkitClass,"getSystemClipboard", "()Ljava/awt/datatransfer/Clipboard;")));
|
||||||
|
(*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,toolkitClass);
|
||||||
|
(*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,toolkit);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_net_kdt_pojavlaunch_AWTInputBridge_nativePutClipboard(JNIEnv *env, jclass clazz,
|
||||||
|
jstring data) {
|
||||||
|
if (runtimeJNIEnvPtr_CLIPBOARD == NULL) {
|
||||||
|
if (runtimeJavaVMPtr != NULL) {
|
||||||
|
(*runtimeJavaVMPtr)->AttachCurrentThread(runtimeJavaVMPtr, &runtimeJNIEnvPtr_CLIPBOARD, NULL);
|
||||||
|
}else{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(clipboard == NULL) obtainClipboard(runtimeJNIEnvPtr_CLIPBOARD);
|
||||||
|
jclass stringSelection = (*runtimeJNIEnvPtr_CLIPBOARD)->FindClass(runtimeJNIEnvPtr_CLIPBOARD,"java/awt/datatransfer/StringSelection");
|
||||||
|
jobject o_stringSelection = (*runtimeJNIEnvPtr_CLIPBOARD)->NewObject(runtimeJNIEnvPtr_CLIPBOARD,stringSelection,(*runtimeJNIEnvPtr_CLIPBOARD)->GetMethodID(runtimeJNIEnvPtr_CLIPBOARD,stringSelection,"<init>", "(Ljava/lang/String;)V"),NULL);
|
||||||
|
(*runtimeJNIEnvPtr_CLIPBOARD)->CallVoidMethod(runtimeJNIEnvPtr_CLIPBOARD,clipboard,(*runtimeJNIEnvPtr_CLIPBOARD)->GetMethodID(env,clipboardClass,"setContents", "(Ljava/awt/datatransfer/Transferable;Ljava/awt/datatransfer/ClipboardOwner;)V"),o_stringSelection,NULL);
|
||||||
|
(*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,stringSelection);
|
||||||
|
(*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,o_stringSelection);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user