about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-10-17 13:07:44 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-10-17 13:07:44 +0200
commit22a89ba91475a24e766bf941a5efd2b634cf5461 (patch)
tree00e62ad5263d041d6102c9eeafb676cb40f3b730 /src
parentfda9b6f75ddf7a2b0e68852ef7faa387d0870119 (diff)
downloadbox64-22a89ba91475a24e766bf941a5efd2b634cf5461.tar.gz
box64-22a89ba91475a24e766bf941a5efd2b634cf5461.zip
Added 1 more wrapped symbol to gtk2 (for #1943)
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt2
-rw-r--r--src/wrapped/generated/wrappedgtkx112types.h2
-rw-r--r--src/wrapped/wrappedgtkx112.c29
-rw-r--r--src/wrapped/wrappedgtkx112_private.h2
4 files changed, 34 insertions, 1 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 6cf07d8b..13d90d63 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -4104,6 +4104,8 @@ wrappedgtkx112:
 - iFpp:
   - gtk_init_check
   - gtk_type_unique
+- uFpp:
+  - gtk_key_snooper_install
 - pFiV:
   - gtk_list_store_new
   - gtk_tree_store_new
diff --git a/src/wrapped/generated/wrappedgtkx112types.h b/src/wrapped/generated/wrappedgtkx112types.h
index e66c8b6e..1fea124f 100644
--- a/src/wrapped/generated/wrappedgtkx112types.h
+++ b/src/wrapped/generated/wrappedgtkx112types.h
@@ -15,6 +15,7 @@ typedef float (*fFp_t)(void*);
 typedef void* (*pFi_t)(int32_t);
 typedef void (*vFpp_t)(void*, void*);
 typedef int32_t (*iFpp_t)(void*, void*);
+typedef uint32_t (*uFpp_t)(void*, void*);
 typedef void* (*pFiV_t)(int32_t, ...);
 typedef void* (*pFpi_t)(void*, int32_t);
 typedef void (*vFppp_t)(void*, void*, void*);
@@ -51,6 +52,7 @@ typedef void* (*pFpipppppppi_t)(void*, int32_t, void*, void*, void*, void*, void
 	GO(gtk_init, vFpp_t) \
 	GO(gtk_init_check, iFpp_t) \
 	GO(gtk_type_unique, iFpp_t) \
+	GO(gtk_key_snooper_install, uFpp_t) \
 	GO(gtk_list_store_new, pFiV_t) \
 	GO(gtk_tree_store_new, pFiV_t) \
 	GO(gtk_type_check_object_cast, pFpi_t) \
diff --git a/src/wrapped/wrappedgtkx112.c b/src/wrapped/wrappedgtkx112.c
index 39f1b08a..5dc94f0d 100644
--- a/src/wrapped/wrappedgtkx112.c
+++ b/src/wrapped/wrappedgtkx112.c
@@ -712,6 +712,29 @@ static void* reverse_GtkLinkButtonUri_Fct(void* fct)
     return (void*)AddBridge(my_lib->w.bridge, vFppp, fct, 0, NULL);
 }
 
+// GtkKeySnoopFunc ...
+#define GO(A)   \
+static uintptr_t my_GtkKeySnoopFunc_fct_##A = 0;                    \
+static void my_GtkKeySnoopFunc_##A(void* a, void* b, void* c)       \
+{                                                                   \
+    RunFunctionFmt(my_GtkKeySnoopFunc_fct_##A, "ppp", a, b, c);     \
+}
+SUPER()
+#undef GO
+static void* find_GtkKeySnoopFunc_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GtkKeySnoopFunc_fct_##A == (uintptr_t)fct) return my_GtkKeySnoopFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GtkKeySnoopFunc_fct_##A == 0) {my_GtkKeySnoopFunc_fct_##A = (uintptr_t)fct; return my_GtkKeySnoopFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gtk-2 GtkKeySnoopFunc callback\n");
+    return NULL;
+}
+
 #undef SUPER
 
 EXPORT void my_gtk_dialog_add_buttons(x64emu_t* emu, void* dialog, void* first, uintptr_t* b)
@@ -1188,6 +1211,12 @@ EXPORT void my_gtk_print_job_send(x64emu_t* emu, void* job, void* f, void* data,
     my->gtk_print_job_send(job, find_GtkPrintJobCompleteFunc_Fct(f), data, findGDestroyNotifyFct(d));
 }
 
+EXPORT uint32_t my_gtk_key_snooper_install(x64emu_t* emu, void* f, void* data)
+{
+    (void)emu;
+    return my->gtk_key_snooper_install(find_GtkKeySnoopFunc_Fct(f), data);
+}
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
diff --git a/src/wrapped/wrappedgtkx112_private.h b/src/wrapped/wrappedgtkx112_private.h
index ea9c9df9..f0ad7677 100644
--- a/src/wrapped/wrappedgtkx112_private.h
+++ b/src/wrapped/wrappedgtkx112_private.h
@@ -1466,7 +1466,7 @@ GO(gtk_item_get_type, LFv)
 //GO(gtk_item_select, 
 GO(gtk_item_toggle, vFp)
 GO(gtk_justification_get_type, LFv)
-//GOM(gtk_key_snooper_install, uFEBp)
+GOM(gtk_key_snooper_install, uFEpp)
 GO(gtk_key_snooper_remove, vFu)
 GO(gtk_label_get, vFpp)
 GO(gtk_label_get_angle, dFp)