1
1
package imgui ;
2
2
3
3
import imgui .assertion .ImAssertCallback ;
4
+ import imgui .callback .ImGuiInputTextCallback ;
4
5
import imgui .flag .ImGuiCond ;
5
6
import imgui .flag .ImGuiDragDropFlags ;
6
7
import imgui .flag .ImGuiInputTextFlags ;
@@ -2988,11 +2989,13 @@ public static boolean vSliderScalar(String label, float sizeX, float sizeY, int
2988
2989
2989
2990
/*JNI
2990
2991
jmethodID jImStringResizeInternalMID;
2992
+ jmethodID jInputTextCallbackMID;
2991
2993
2992
2994
jfieldID inputDataSizeID;
2993
2995
jfieldID inputDataIsDirtyID;
2994
2996
jfieldID inputDataIsResizedID;
2995
2997
2998
+
2996
2999
struct InputTextCallbackUserData {
2997
3000
JNIEnv* env;
2998
3001
jobject* imString;
@@ -3001,6 +3004,7 @@ public static boolean vSliderScalar(String label, float sizeX, float sizeY, int
3001
3004
char* resizedBuf;
3002
3005
jobject* textInputData;
3003
3006
char* allowedChars;
3007
+ jobject* handler;
3004
3008
};
3005
3009
3006
3010
static int TextEditCallbackStub(ImGuiInputTextCallbackData* data) {
@@ -3033,6 +3037,11 @@ static int TextEditCallbackStub(ImGuiInputTextCallbackData* data) {
3033
3037
}
3034
3038
}
3035
3039
3040
+ if (userData->handler != NULL) {
3041
+ JNIEnv* env = userData->env;
3042
+ env->CallObjectMethod(*userData->handler, jInputTextCallbackMID, data);
3043
+ }
3044
+
3036
3045
return 0;
3037
3046
}
3038
3047
*/
@@ -3045,41 +3054,68 @@ static int TextEditCallbackStub(ImGuiInputTextCallbackData* data) {
3045
3054
3046
3055
jclass jImString = env->FindClass("imgui/type/ImString");
3047
3056
jImStringResizeInternalMID = env->GetMethodID(jImString, "resizeInternal", "(I)[B");
3057
+
3058
+ jclass jCallback = env->FindClass("imgui/callback/ImGuiInputTextCallback");
3059
+ jInputTextCallbackMID = env->GetMethodID(jCallback, "accept", "(J)V");
3048
3060
*/
3049
3061
3050
3062
public static boolean inputText (String label , ImString text ) {
3051
- return preInputText (false , label , null , text , 0 , 0 , ImGuiInputTextFlags . None );
3063
+ return preInputText (false , label , null , text );
3052
3064
}
3053
3065
3054
3066
public static boolean inputText (String label , ImString text , int imGuiInputTextFlags ) {
3055
3067
return preInputText (false , label , null , text , 0 , 0 , imGuiInputTextFlags );
3056
3068
}
3057
3069
3070
+ public static boolean inputText (String label , ImString text , int imGuiInputTextFlags , ImGuiInputTextCallback callback ) {
3071
+ return preInputText (false , label , null , text , 0 , 0 , imGuiInputTextFlags , callback );
3072
+ }
3073
+
3058
3074
public static boolean inputTextMultiline (String label , ImString text ) {
3059
- return preInputText (true , label , null , text , 0 , 0 , ImGuiInputTextFlags . None );
3075
+ return preInputText (true , label , null , text );
3060
3076
}
3061
3077
3062
3078
public static boolean inputTextMultiline (String label , ImString text , float width , float height ) {
3063
- return preInputText (true , label , null , text , width , height , ImGuiInputTextFlags . None );
3079
+ return preInputText (true , label , null , text , width , height );
3064
3080
}
3065
3081
3066
3082
public static boolean inputTextMultiline (String label , ImString text , int imGuiInputTextFlags ) {
3067
3083
return preInputText (true , label , null , text , 0 , 0 , imGuiInputTextFlags );
3068
3084
}
3069
3085
3086
+ public static boolean inputTextMultiline (String label , ImString text , int imGuiInputTextFlags , ImGuiInputTextCallback callback ) {
3087
+ return preInputText (true , label , null , text , 0 , 0 , imGuiInputTextFlags , callback );
3088
+ }
3089
+
3070
3090
public static boolean inputTextMultiline (String label , ImString text , float width , float height , int imGuiInputTextFlags ) {
3071
3091
return preInputText (true , label , null , text , width , height , imGuiInputTextFlags );
3072
3092
}
3073
3093
3094
+ public static boolean inputTextMultiline (String label , ImString text , float width , float height , int imGuiInputTextFlags , ImGuiInputTextCallback callback ) {
3095
+ return preInputText (true , label , null , text , width , height , imGuiInputTextFlags , callback );
3096
+ }
3097
+
3074
3098
public static boolean inputTextWithHint (String label , String hint , ImString text ) {
3075
- return preInputText (false , label , hint , text , 0 , 0 , ImGuiInputTextFlags . None );
3099
+ return preInputText (false , label , hint , text );
3076
3100
}
3077
3101
3078
3102
public static boolean inputTextWithHint (String label , String hint , ImString text , int imGuiInputTextFlags ) {
3079
3103
return preInputText (false , label , hint , text , 0 , 0 , imGuiInputTextFlags );
3080
3104
}
3081
3105
3106
+ private static boolean preInputText (boolean multiline , String label , String hint , ImString text ) {
3107
+ return preInputText (multiline , label , hint , text , 0 , 0 );
3108
+ }
3109
+
3110
+ private static boolean preInputText (boolean multiline , String label , String hint , ImString text , float width , float height ) {
3111
+ return preInputText (multiline , label , hint , text , width , height , ImGuiInputTextFlags .None );
3112
+ }
3113
+
3082
3114
private static boolean preInputText (boolean multiline , String label , String hint , ImString text , float width , float height , int flags ) {
3115
+ return preInputText (multiline , label , hint , text , width , height , flags , null );
3116
+ }
3117
+
3118
+ private static boolean preInputText (boolean multiline , String label , String hint , ImString text , float width , float height , int flags , ImGuiInputTextCallback callback ) {
3083
3119
final ImString .InputData inputData = text .inputData ;
3084
3120
3085
3121
if (inputData .isResizable ) {
@@ -3095,10 +3131,10 @@ private static boolean preInputText(boolean multiline, String label, String hint
3095
3131
hintLabel = "" ;
3096
3132
}
3097
3133
3098
- return nInputText (multiline , hint != null , label , hintLabel , text , text .getData (), text .getData ().length , width , height , flags , inputData , inputData .allowedChars );
3134
+ return nInputText (multiline , hint != null , label , hintLabel , text , text .getData (), text .getData ().length , width , height , flags , inputData , inputData .allowedChars , callback );
3099
3135
}
3100
3136
3101
- private static native boolean nInputText (boolean multiline , boolean hint , String label , String hintLabel , ImString imString , byte [] buf , int maxSize , float width , float height , int flags , ImString .InputData textInputData , String allowedChars ); /*
3137
+ private static native boolean nInputText (boolean multiline , boolean hint , String label , String hintLabel , ImString imString , byte [] buf , int maxSize , float width , float height , int flags , ImString .InputData textInputData , String allowedChars , ImGuiInputTextCallback callback ); /*
3102
3138
InputTextCallbackUserData userData;
3103
3139
userData.imString = &imString;
3104
3140
userData.maxSize = maxSize;
@@ -3107,6 +3143,7 @@ private static boolean preInputText(boolean multiline, String label, String hint
3107
3143
userData.textInputData = &textInputData;
3108
3144
userData.env = env;
3109
3145
userData.allowedChars = allowedChars;
3146
+ userData.handler = &callback;
3110
3147
3111
3148
bool valueChanged;
3112
3149
0 commit comments