move performClick implementation to WrapperWidget

This commit is contained in:
Julian Winkler
2024-02-09 10:05:22 +01:00
parent 4ab7daa033
commit 6eeb6b0232
2 changed files with 20 additions and 15 deletions

View File

@@ -139,6 +139,17 @@ void wrapper_widget_queue_draw(WrapperWidget *wrapper)
gtk_widget_queue_allocate(GTK_WIDGET(wrapper));
}
static bool on_click(GtkGestureClick *gesture, int n_press, double x, double y, jobject this)
{
JNIEnv *env = get_jni_env();
bool ret = (*env)->CallBooleanMethod(env, this, handle_cache.view.performClick);
if((*env)->ExceptionCheck(env))
(*env)->ExceptionDescribe(env);
return ret;
}
void wrapper_widget_set_jobject(WrapperWidget *wrapper, JNIEnv *env, jobject jobj)
{
JavaVM *jvm;
@@ -167,6 +178,14 @@ void wrapper_widget_set_jobject(WrapperWidget *wrapper, JNIEnv *env, jobject job
if (computeScroll_method != handle_cache.view.computeScroll) {
wrapper->computeScroll_method = computeScroll_method;
}
jmethodID performClick_method = _METHOD(_CLASS(jobj), "performClick", "()Z");
if (performClick_method != handle_cache.view.performClick) {
GtkEventController *controller = GTK_EVENT_CONTROLLER(gtk_gesture_click_new());
g_signal_connect(controller, "released", G_CALLBACK(on_click), _REF(jobj));
gtk_widget_add_controller(wrapper->child, controller);
}
}
void wrapper_widget_set_layout_params(WrapperWidget *wrapper, int width, int height)