diff options
Diffstat (limited to 'src/wrapped/wrappedgtk3.c')
| -rw-r--r-- | src/wrapped/wrappedgtk3.c | 155 |
1 files changed, 92 insertions, 63 deletions
diff --git a/src/wrapped/wrappedgtk3.c b/src/wrapped/wrappedgtk3.c index b2e459d1..87a7bd7a 100644 --- a/src/wrapped/wrappedgtk3.c +++ b/src/wrapped/wrappedgtk3.c @@ -99,10 +99,10 @@ GO(3) // GtkMenuDetachFunc #define GO(A) \ -static uintptr_t my_menudetach_fct_##A = 0; \ -static void my_menudetach_##A(void* widget, void* menu) \ -{ \ - RunFunction(my_context, my_menudetach_fct_##A, 2, widget, menu);\ +static uintptr_t my_menudetach_fct_##A = 0; \ +static void my_menudetach_##A(void* widget, void* menu) \ +{ \ + RunFunctionFmt(my_menudetach_fct_##A, "pp", widget, menu); \ } SUPER() #undef GO @@ -122,10 +122,10 @@ static void* findMenuDetachFct(void* fct) // GtkMenuPositionFunc #define GO(A) \ -static uintptr_t my_menuposition_fct_##A = 0; \ -static void my_menuposition_##A(void* menu, void* x, void* y, void* push_in, void* data) \ -{ \ - RunFunction(my_context, my_menuposition_fct_##A, 5, menu, x, y, push_in, data);\ +static uintptr_t my_menuposition_fct_##A = 0; \ +static void my_menuposition_##A(void* menu, void* x, void* y, void* push_in, void* data) \ +{ \ + RunFunctionFmt(my_menuposition_fct_##A, "ppppp", menu, x, y, push_in, data); \ } SUPER() #undef GO @@ -145,10 +145,10 @@ static void* findMenuPositionFct(void* fct) // GtkFunction #define GO(A) \ -static uintptr_t my3_gtkfunction_fct_##A = 0; \ -static int my3_gtkfunction_##A(void* data) \ -{ \ - return RunFunction(my_context, my3_gtkfunction_fct_##A, 1, data);\ +static uintptr_t my3_gtkfunction_fct_##A = 0; \ +static int my3_gtkfunction_##A(void* data) \ +{ \ + return RunFunctionFmt(my3_gtkfunction_fct_##A, "p", data); \ } SUPER() #undef GO @@ -168,10 +168,10 @@ static void* findGtkFunctionFct(void* fct) // GtkClipboardGetFunc #define GO(A) \ -static uintptr_t my_clipboardget_fct_##A = 0; \ -static void my_clipboardget_##A(void* clipboard, void* selection, uint32_t info, void* data) \ -{ \ - RunFunction(my_context, my_clipboardget_fct_##A, 4, clipboard, selection, info, data);\ +static uintptr_t my_clipboardget_fct_##A = 0; \ +static void my_clipboardget_##A(void* clipboard, void* selection, uint32_t info, void* data) \ +{ \ + RunFunctionFmt(my_clipboardget_fct_##A, "ppup", clipboard, selection, info, data); \ } SUPER() #undef GO @@ -191,10 +191,10 @@ static void* findClipboadGetFct(void* fct) // GtkClipboardClearFunc #define GO(A) \ -static uintptr_t my_clipboardclear_fct_##A = 0; \ -static void my_clipboardclear_##A(void* clipboard, void* data) \ -{ \ - RunFunction(my_context, my_clipboardclear_fct_##A, 2, clipboard, data);\ +static uintptr_t my_clipboardclear_fct_##A = 0; \ +static void my_clipboardclear_##A(void* clipboard, void* data) \ +{ \ + RunFunctionFmt(my_clipboardclear_fct_##A, "pp", clipboard, data); \ } SUPER() #undef GO @@ -213,11 +213,11 @@ static void* findClipboadClearFct(void* fct) } // GtkCallback -#define GO(A) \ -static uintptr_t my3_gtkcallback_fct_##A = 0; \ -static void my3_gtkcallback_##A(void* widget, void* data) \ -{ \ - RunFunction(my_context, my3_gtkcallback_fct_##A, 2, widget, data);\ +#define GO(A) \ +static uintptr_t my3_gtkcallback_fct_##A = 0; \ +static void my3_gtkcallback_##A(void* widget, void* data) \ +{ \ + RunFunctionFmt(my3_gtkcallback_fct_##A, "pp", widget, data); \ } SUPER() #undef GO @@ -237,10 +237,10 @@ static void* findGtkCallbackFct(void* fct) // GtkTextCharPredicate #define GO(A) \ -static uintptr_t my_textcharpredicate_fct_##A = 0; \ -static int my_textcharpredicate_##A(uint32_t ch, void* data) \ -{ \ - return (int)RunFunction(my_context, my_textcharpredicate_fct_##A, 2, ch, data);\ +static uintptr_t my_textcharpredicate_fct_##A = 0; \ +static int my_textcharpredicate_##A(uint32_t ch, void* data) \ +{ \ + return (int)RunFunctionFmt(my_textcharpredicate_fct_##A, "up", ch, data); \ } SUPER() #undef GO @@ -260,10 +260,10 @@ static void* findGtkTextCharPredicateFct(void* fct) // Toolbar #define GO(A) \ -static uintptr_t my_toolbar_fct_##A = 0; \ -static void my_toolbar_##A(void* widget, void* data) \ -{ \ - RunFunction(my_context, my_toolbar_fct_##A, 2, widget, data);\ +static uintptr_t my_toolbar_fct_##A = 0; \ +static void my_toolbar_##A(void* widget, void* data) \ +{ \ + RunFunctionFmt(my_toolbar_fct_##A, "pp", widget, data); \ } SUPER() #undef GO @@ -283,10 +283,10 @@ static void* findToolbarFct(void* fct) // Builder #define GO(A) \ -static uintptr_t my_builderconnect_fct_##A = 0; \ -static void my_builderconnect_##A(void* builder, void* object, void* signal, void* handler, void* connect, int flags, void* data) \ -{ \ - RunFunction(my_context, my_builderconnect_fct_##A, 7, builder, object, signal, handler, connect, flags, data);\ +static uintptr_t my_builderconnect_fct_##A = 0; \ +static void my_builderconnect_##A(void* builder, void* object, void* signal, void* handler, void* connect, int flags, void* data) \ +{ \ + RunFunctionFmt(my_builderconnect_fct_##A, "pppppip", builder, object, signal, handler, connect, flags, data); \ } SUPER() #undef GO @@ -306,10 +306,10 @@ static void* findBuilderConnectFct(void* fct) // GtkTreeViewSearchEqualFunc #define GO(A) \ -static uintptr_t my_GtkTreeViewSearchEqualFunc_fct_##A = 0; \ -static int my_GtkTreeViewSearchEqualFunc_##A(void* model, int column, void* key, void* iter, void* data) \ -{ \ - return RunFunction(my_context, my_GtkTreeViewSearchEqualFunc_fct_##A, 5, model, column, key, iter, data); \ +static uintptr_t my_GtkTreeViewSearchEqualFunc_fct_##A = 0; \ +static int my_GtkTreeViewSearchEqualFunc_##A(void* model, int column, void* key, void* iter, void* data) \ +{ \ + return RunFunctionFmt(my_GtkTreeViewSearchEqualFunc_fct_##A, "pippp", model, column, key, iter, data); \ } SUPER() #undef GO @@ -328,10 +328,10 @@ static void* findGtkTreeViewSearchEqualFuncFct(void* fct) } // GtkTreeCellDataFunc #define GO(A) \ -static uintptr_t my_GtkTreeCellDataFunc_fct_##A = 0; \ -static void my_GtkTreeCellDataFunc_##A(void* tree, void* cell, void* model, void* iter, void* data) \ -{ \ - RunFunction(my_context, my_GtkTreeCellDataFunc_fct_##A, 5, tree, cell, model, iter, data); \ +static uintptr_t my_GtkTreeCellDataFunc_fct_##A = 0; \ +static void my_GtkTreeCellDataFunc_##A(void* tree, void* cell, void* model, void* iter, void* data) \ +{ \ + RunFunctionFmt(my_GtkTreeCellDataFunc_fct_##A, "ppppp", tree, cell, model, iter, data); \ } SUPER() #undef GO @@ -351,10 +351,10 @@ static void* findGtkTreeCellDataFuncFct(void* fct) // GDestroyNotify #define GO(A) \ -static uintptr_t my_GDestroyNotify_fct_##A = 0; \ -static void my_GDestroyNotify_##A(void* data) \ -{ \ - RunFunction(my_context, my_GDestroyNotify_fct_##A, 1, data); \ +static uintptr_t my_GDestroyNotify_fct_##A = 0; \ +static void my_GDestroyNotify_##A(void* data) \ +{ \ + RunFunctionFmt(my_GDestroyNotify_fct_##A, "p", data); \ } SUPER() #undef GO @@ -374,10 +374,10 @@ static void* findGDestroyNotifyFct(void* fct) // GtkTreeIterCompareFunc #define GO(A) \ -static uintptr_t my_GtkTreeIterCompareFunc_fct_##A = 0; \ -static int my_GtkTreeIterCompareFunc_##A(void* model, void* a, void* b, void* data) \ -{ \ - return RunFunction(my_context, my_GtkTreeIterCompareFunc_fct_##A, 4, model, a, b, data); \ +static uintptr_t my_GtkTreeIterCompareFunc_fct_##A = 0; \ +static int my_GtkTreeIterCompareFunc_##A(void* model, void* a, void* b, void* data) \ +{ \ + return RunFunctionFmt(my_GtkTreeIterCompareFunc_fct_##A, "pppp", model, a, b, data); \ } SUPER() #undef GO @@ -397,10 +397,10 @@ static void* findGtkTreeIterCompareFuncFct(void* fct) // GtkPrinterFunc #define GO(A) \ -static uintptr_t my_GtkPrinterFunc_fct_##A = 0; \ -static int my_GtkPrinterFunc_##A(void* printer, void* data) \ -{ \ - return RunFunction(my_context, my_GtkPrinterFunc_fct_##A, 2, printer, data); \ +static uintptr_t my_GtkPrinterFunc_fct_##A = 0; \ +static int my_GtkPrinterFunc_##A(void* printer, void* data) \ +{ \ + return RunFunctionFmt(my_GtkPrinterFunc_fct_##A, "pp", printer, data); \ } SUPER() #undef GO @@ -420,10 +420,10 @@ static void* findGtkPrinterFuncFct(void* fct) // GtkPrintJobCompleteHunc #define GO(A) \ -static uintptr_t my_GtkPrintJobCompleteHunc_fct_##A = 0; \ -static void my_GtkPrintJobCompleteHunc_##A(void* job, void* data, void* error) \ -{ \ - RunFunction(my_context, my_GtkPrintJobCompleteHunc_fct_##A, 3, job, data, error); \ +static uintptr_t my_GtkPrintJobCompleteHunc_fct_##A = 0; \ +static void my_GtkPrintJobCompleteHunc_##A(void* job, void* data, void* error) \ +{ \ + RunFunctionFmt(my_GtkPrintJobCompleteHunc_fct_##A, "ppp", job, data, error); \ } SUPER() #undef GO @@ -441,6 +441,30 @@ static void* findGtkPrintJobCompleteHuncFct(void* fct) return NULL; } + +// GtkClipboardTextReceivedFunc +#define GO(A) \ +static uintptr_t my_GtkClipboardTextReceivedFunc_fct_##A = 0; \ +static void my_GtkClipboardTextReceivedFunc_##A(void* clipboard, void* text, void* data) \ +{ \ + RunFunctionFmt(my_GtkClipboardTextReceivedFunc_fct_##A, "ppp", clipboard, text, data); \ +} +SUPER() +#undef GO +static void* findGtkClipboardTextReceivedFuncFct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_GtkClipboardTextReceivedFunc_fct_##A == (uintptr_t)fct) return my_GtkClipboardTextReceivedFunc_##A; + SUPER() + #undef GO + #define GO(A) if(my_GtkClipboardTextReceivedFunc_fct_##A == 0) {my_GtkClipboardTextReceivedFunc_fct_##A = (uintptr_t)fct; return my_GtkClipboardTextReceivedFunc_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for gtk-3 GtkClipboardTextReceivedFunc callback\n"); + return NULL; +} + #undef SUPER /* EXPORT void my3_gtk_dialog_add_buttons(x64emu_t* emu, void* dialog, void* first, uintptr_t* b) @@ -533,7 +557,7 @@ EXPORT int my3_gtk_clipboard_set_with_owner(x64emu_t* emu, void* clipboard, void static void* my_translate_func(void* path, my_signal_t* sig) { - return (void*)RunFunction(my_context, sig->c_handler, 2, path, sig->data); + return (void*)RunFunctionFmt(sig->c_handler, "pp", path, sig->data) ; } EXPORT void my3_gtk_stock_set_translate_func(x64emu_t* emu, void* domain, void* f, void* data, void* notify) @@ -639,7 +663,7 @@ typedef struct my_connectargs_s { //defined in gobject2... uintptr_t my_g_signal_connect_object(x64emu_t* emu, void* instance, void* detailed, void* c_handler, void* object, uint32_t flags); uintptr_t my_g_signal_connect_data(x64emu_t* emu, void* instance, void* detailed, void* c_handler, void* data, void* closure, uint32_t flags); -static void my3_gtk_builder_connect_signals_default(void* builder, void* object, +static void my3_gtk_builder_connect_signals_default(void* builder, void* object, char* signal_name, char* handler_name, void* connect_object, uint32_t flags, my_connectargs_t* args) { @@ -723,6 +747,11 @@ EXPORT void my3_gtk_container_foreach(x64emu_t* emu, void* container, void* cb, my->gtk_container_foreach(container, findGtkCallbackFct(cb), data); } +EXPORT void my3_gtk_clipboard_request_text(x64emu_t* emu, void* clipboard, void* f, void* data) +{ + my->gtk_clipboard_request_text(clipboard, findGtkClipboardTextReceivedFuncFct(f), data); +} + #define PRE_INIT \ if(box64_nogtk) \ return -1; |