From c7f64cd24ba195a3ac2f704af9c246f3a98f84f8 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Fri, 19 Jul 2024 14:05:25 +0200 Subject: [PATCH] Button/ImageButton: remove old OnClickListener when setting new one --- src/api-impl-jni/widgets/android_widget_Button.c | 1 + src/api-impl-jni/widgets/android_widget_ImageButton.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/api-impl-jni/widgets/android_widget_Button.c b/src/api-impl-jni/widgets/android_widget_Button.c index 76f3d0e6..f30febd9 100644 --- a/src/api-impl-jni/widgets/android_widget_Button.c +++ b/src/api-impl-jni/widgets/android_widget_Button.c @@ -46,6 +46,7 @@ static void clicked_cb(GtkWidget *button, struct touch_callback_data *d) { JNIEXPORT void JNICALL Java_android_widget_Button_native_1setOnClickListener(JNIEnv *env, jobject this, jlong widget_ptr, jobject on_click_listener) { GtkWidget *button = GTK_WIDGET(_PTR(widget_ptr)); + g_signal_handlers_disconnect_matched(button, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, clicked_cb, NULL); if (!on_click_listener) return; diff --git a/src/api-impl-jni/widgets/android_widget_ImageButton.c b/src/api-impl-jni/widgets/android_widget_ImageButton.c index cd9051cd..af6cc737 100644 --- a/src/api-impl-jni/widgets/android_widget_ImageButton.c +++ b/src/api-impl-jni/widgets/android_widget_ImageButton.c @@ -46,6 +46,7 @@ static void clicked_cb(GtkWidget *button, struct touch_callback_data *d) { JNIEXPORT void JNICALL Java_android_widget_ImageButton_native_1setOnClickListener(JNIEnv *env, jobject this, jlong widget_ptr, jobject on_click_listener) { GtkWidget *button = GTK_WIDGET(_PTR(widget_ptr)); + g_signal_handlers_disconnect_matched(button, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, clicked_cb, NULL); if (!on_click_listener) return;