diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-03-19 15:11:04 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-03-19 15:11:04 +0100 |
| commit | 5a563f1cc65a0e809d151132f9bdbb7f330cd5e6 (patch) | |
| tree | c1dd62e1a6f69c6ab54eb172ad819ed33e5a2e33 /src | |
| parent | 7c42cf2d95f7197f7982fb1fc27b54deeea14f2a (diff) | |
| download | box64-5a563f1cc65a0e809d151132f9bdbb7f330cd5e6.tar.gz box64-5a563f1cc65a0e809d151132f9bdbb7f330cd5e6.zip | |
More work on GTK wrapping (hterm seems to run fine now)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/include/gtkclass.h | 103 | ||||
| -rwxr-xr-x | src/tools/bridge.c | 2 | ||||
| -rwxr-xr-x | src/tools/gtkclass.c | 352 | ||||
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedgtkx112types.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedgobject2.c | 39 | ||||
| -rwxr-xr-x | src/wrapped/wrappedgtkx112.c | 311 | ||||
| -rwxr-xr-x | src/wrapped/wrappedgtkx112_private.h | 16 | ||||
| -rwxr-xr-x | src/wrapped/wrappedpango_private.h | 10 |
9 files changed, 630 insertions, 207 deletions
diff --git a/src/include/gtkclass.h b/src/include/gtkclass.h index d70cb34b..17c4be21 100755 --- a/src/include/gtkclass.h +++ b/src/include/gtkclass.h @@ -224,6 +224,100 @@ typedef struct my_GtkWindowClass_s { void (*_gtk_reserved4) (void); } my_GtkWindowClass_t; +typedef struct my_GtkButtonClass_s { + my_GtkBinClass_t parent_class; + void (* pressed) (void *button); + void (* released) (void *button); + void (* clicked) (void *button); + void (* enter) (void *button); + void (* leave) (void *button); + void (* activate) (void *button); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); +} my_GtkButtonClass_t; + +typedef struct my_GtkToggleButtonClass_s { + my_GtkButtonClass_t parent_class; + void (* toggled) (void* toggle_button); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); +} my_GtkToggleButtonClass_t; + +typedef struct my_GtkCheckButtonClass_s { + my_GtkToggleButtonClass_t parent_class; + void (* draw_indicator) (void* check_button, void* area); + void (*_gtk_reserved0) (void); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); +} my_GtkCheckButtonClass_t; + +typedef struct my_GtkComboBoxClass_s { + my_GtkBinClass_t parent_class; + void (* changed) (void* combo_box); + void*(* get_active_text)(void* combo_box); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); +} my_GtkComboBoxClass_t; + +typedef struct my_GtkEntryClass_s { + my_GtkWidgetClass_t parent_class; + void (* populate_popup) (void* entry, void* menu); + void (* activate) (void* entry); + void (* move_cursor) (void* entry, int step, int count, int extend_selection); + void (* insert_at_cursor) (void* entry, void* str); + void (* delete_from_cursor) (void* entry, int type, int count); + void (* backspace) (void* entry); + void (* cut_clipboard) (void* entry); + void (* copy_clipboard) (void* entry); + void (* paste_clipboard) (void* entry); + void (* toggle_overwrite) (void* entry); + void (* get_text_area_size) (void* entry, void* x, void* y, void* width, void* height); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); +} my_GtkEntryClass_t; + +typedef struct my_GtkSpinButtonClass_s { + my_GtkEntryClass_t parent_class; + int (*input) (void* spin_button, void* new_value); + int (*output) (void* spin_button); + void (*value_changed) (void* spin_button); + void (*change_value) (void* spin_button, int scroll); + void (*wrapped) (void* spin_button); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); +} my_GtkSpinButtonClass_t; + +typedef struct my_GtkProgressClass_s { + my_GtkWidgetClass_t parent_class; + void (* paint) (void* progress); + void (* update) (void* progress); + void (* act_mode_enter) (void* progress); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); +} my_GtkProgressClass_t; + +typedef struct my_GtkProgressBarClass_s { + my_GtkProgressClass_t parent_class; + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); +} my_GtkProgressBarClass_t; + +typedef struct my_GtkFrameClass_s { + my_GtkBinClass_t parent_class; + void (*compute_child_allocation) (void* frame, void* allocation); +} my_GtkFrameClass_t; + typedef struct my_MetaFramesClass_s { my_GtkWindowClass_t parent_class; @@ -307,6 +401,15 @@ GTKCLASS(GtkBin) \ GTKCLASS(GtkWindow) \ GTKCLASS(GtkTable) \ GTKCLASS(GtkFixed) \ +GTKCLASS(GtkButton) \ +GTKCLASS(GtkComboBox) \ +GTKCLASS(GtkToggleButton)\ +GTKCLASS(GtkCheckButton)\ +GTKCLASS(GtkEntry) \ +GTKCLASS(GtkSpinButton) \ +GTKCLASS(GtkProgress) \ +GTKCLASS(GtkProgressBar)\ +GTKCLASS(GtkFrame) \ GTKCLASS(MetaFrames) \ #define GTKCLASS(A) void Set##A##ID(size_t id); diff --git a/src/tools/bridge.c b/src/tools/bridge.c index 2574ddbd..b2e8d5ff 100755 --- a/src/tools/bridge.c +++ b/src/tools/bridge.c @@ -183,6 +183,8 @@ void* GetNativeFnc(uintptr_t fnc) Dl_info info; if(dladdr((void*)fnc, &info)) return (void*)fnc; + if(!getProtection(fnc)) + return NULL; // check if it's an indirect jump #define PK(a) *(uint8_t*)(fnc+a) #define PK32(a) *(uint32_t*)(fnc+a) diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c index af1cde5b..3f6ef0d3 100755 --- a/src/tools/gtkclass.c +++ b/src/tools/gtkclass.c @@ -702,6 +702,358 @@ static void bridgeMetaFramesClass(my_MetaFramesClass_t* class) #undef SUPERGO +// ----- GtkButtonClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GtkButton, pressed, void, (void* button), 1, button); +WRAPPER(GtkButton, released, void, (void* button), 1, button); +WRAPPER(GtkButton, clicked, void, (void* button), 1, button); +WRAPPER(GtkButton, enter, void, (void* button), 1, button); +WRAPPER(GtkButton, leave, void, (void* button), 1, button); +WRAPPER(GtkButton, activate, void, (void* button), 1, button); + +#define SUPERGO() \ + GO(pressed, vFp); \ + GO(released, vFp); \ + GO(clicked, vFp); \ + GO(enter, vFp); \ + GO(leave, vFp); \ + GO(activate, vFp); \ + + +// wrap (so bridge all calls, just in case) +static void wrapGtkButtonClass(my_GtkButtonClass_t* class) +{ + wrapGtkBinClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkButton (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkButtonClass(my_GtkButtonClass_t* class) +{ + unwrapGtkBinClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkButton (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkButtonClass(my_GtkButtonClass_t* class) +{ + bridgeGtkBinClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkButton (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + +// ----- GtkComboBoxClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GtkComboBox, changed, void, (void* combo_box), 1, combo_box); +WRAPPER(GtkComboBox, get_active_text, void*, (void* combo_box), 1, combo_box); + +#define SUPERGO() \ + GO(changed, vFp); \ + GO(get_active_text, pFp); \ + + +// wrap (so bridge all calls, just in case) +static void wrapGtkComboBoxClass(my_GtkComboBoxClass_t* class) +{ + wrapGtkBinClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkComboBox (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkComboBoxClass(my_GtkComboBoxClass_t* class) +{ + unwrapGtkBinClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkComboBox (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkComboBoxClass(my_GtkComboBoxClass_t* class) +{ + bridgeGtkBinClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkComboBox (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + +// ----- GtkToggleButtonClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GtkToggleButton, toggled, void, (void* toggle_button), 1, toggle_button); + +#define SUPERGO() \ + GO(toggled, vFp); \ + + +// wrap (so bridge all calls, just in case) +static void wrapGtkToggleButtonClass(my_GtkToggleButtonClass_t* class) +{ + wrapGtkButtonClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkToggleButton (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkToggleButtonClass(my_GtkToggleButtonClass_t* class) +{ + unwrapGtkButtonClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkToggleButton (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkToggleButtonClass(my_GtkToggleButtonClass_t* class) +{ + bridgeGtkButtonClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkToggleButton (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + +// ----- GtkCheckButtonClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GtkCheckButton, draw_indicator, void, (void* check_button, void* area), 2, check_button, area); + +#define SUPERGO() \ + GO(draw_indicator, vFpp); \ + + +// wrap (so bridge all calls, just in case) +static void wrapGtkCheckButtonClass(my_GtkCheckButtonClass_t* class) +{ + wrapGtkToggleButtonClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkCheckButton (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkCheckButtonClass(my_GtkCheckButtonClass_t* class) +{ + unwrapGtkToggleButtonClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkCheckButton (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkCheckButtonClass(my_GtkCheckButtonClass_t* class) +{ + bridgeGtkToggleButtonClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkCheckButton (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + +// ----- GtkEntryClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GtkEntry, populate_popup, void, (void* entry, void* menu), 2, entry, menu); +WRAPPER(GtkEntry, activate, void, (void* entry), 1, entry); +WRAPPER(GtkEntry, move_cursor, void, (void* entry, int step, int count, int extend_selection), 4, entry, step, count, extend_selection); +WRAPPER(GtkEntry, insert_at_cursor, void, (void* entry, void* str), 2, entry, str); +WRAPPER(GtkEntry, delete_from_cursor, void, (void* entry, int type, int count), 3, entry, type, count); +WRAPPER(GtkEntry, backspace, void, (void* entry), 1, entry); +WRAPPER(GtkEntry, cut_clipboard, void, (void* entry), 1, entry); +WRAPPER(GtkEntry, copy_clipboard, void, (void* entry), 1, entry); +WRAPPER(GtkEntry, paste_clipboard, void, (void* entry), 1, entry); +WRAPPER(GtkEntry, toggle_overwrite, void, (void* entry), 1, entry); +WRAPPER(GtkEntry, get_text_area_size, void, (void* entry, void* x, void* y, void* width, void* height), 5, entry, x, y, width, height); + +#define SUPERGO() \ + GO(populate_popup, vFpp); \ + GO(activate, vFp); \ + GO(move_cursor, vFpiii); \ + GO(insert_at_cursor, vFp); \ + GO(delete_from_cursor, vFpii); \ + GO(backspace, vFp); \ + GO(cut_clipboard, vFp); \ + GO(copy_clipboard, vFp); \ + GO(paste_clipboard, vFp); \ + GO(toggle_overwrite, vFp); \ + GO(get_text_area_size, vFppppp);\ + +// wrap (so bridge all calls, just in case) +static void wrapGtkEntryClass(my_GtkEntryClass_t* class) +{ + wrapGtkWidgetClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkEntry (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkEntryClass(my_GtkEntryClass_t* class) +{ + unwrapGtkWidgetClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkEntry (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkEntryClass(my_GtkEntryClass_t* class) +{ + bridgeGtkWidgetClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkEntry (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + +// ----- GtkSpinButtonClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GtkSpinButton, input, int, (void* spin_button, void* new_value), 2, spin_button, new_value); +WRAPPER(GtkSpinButton, output, int, (void* spin_button), 1, spin_button); +WRAPPER(GtkSpinButton, value_changed, void, (void* spin_button), 1, spin_button); +WRAPPER(GtkSpinButton, change_value, void, (void* spin_button, int scroll), 2, spin_button, scroll); +WRAPPER(GtkSpinButton, wrapped, void, (void* spin_button), 1, spin_button); + +#define SUPERGO() \ + GO(input, iFpp); \ + GO(output, iFp); \ + GO(value_changed, vFp); \ + GO(change_value, vFpi); \ + GO(wrapped, vFp); \ + +// wrap (so bridge all calls, just in case) +static void wrapGtkSpinButtonClass(my_GtkSpinButtonClass_t* class) +{ + wrapGtkEntryClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkSpinButton (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkSpinButtonClass(my_GtkSpinButtonClass_t* class) +{ + unwrapGtkEntryClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkSpinButton (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkSpinButtonClass(my_GtkSpinButtonClass_t* class) +{ + bridgeGtkEntryClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkSpinButton (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + +// ----- GtkProgressClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GtkProgress, paint, void, (void* progress), 1, progress); +WRAPPER(GtkProgress, update, void, (void* progress), 1, progress); +WRAPPER(GtkProgress, act_mode_enter, void, (void* progress), 1, progress); + +#define SUPERGO() \ + GO(paint, vFp); \ + GO(update, vFp); \ + GO(act_mode_enter, vFp);\ + +// wrap (so bridge all calls, just in case) +static void wrapGtkProgressClass(my_GtkProgressClass_t* class) +{ + wrapGtkWidgetClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkProgress (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkProgressClass(my_GtkProgressClass_t* class) +{ + unwrapGtkWidgetClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkProgress (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkProgressClass(my_GtkProgressClass_t* class) +{ + bridgeGtkWidgetClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkProgress (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + +// ----- GtkProgressBarClass ------ +// no wrapper x86 -> natives of callbacks + +#define SUPERGO() \ + +// wrap (so bridge all calls, just in case) +static void wrapGtkProgressBarClass(my_GtkProgressBarClass_t* class) +{ + wrapGtkProgressClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkProgressBar (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkProgressBarClass(my_GtkProgressBarClass_t* class) +{ + unwrapGtkProgressClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkProgressBar (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkProgressBarClass(my_GtkProgressBarClass_t* class) +{ + bridgeGtkProgressClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkProgressBar (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + +// ----- GtkFrameClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GtkFrame, compute_child_allocation, void, (void* frame, void* allocation), 2, frame, allocation); + +#define SUPERGO() \ + GO(compute_child_allocation, vFpp); \ + +// wrap (so bridge all calls, just in case) +static void wrapGtkFrameClass(my_GtkFrameClass_t* class) +{ + wrapGtkBinClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GtkFrame (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGtkFrameClass(my_GtkFrameClass_t* class) +{ + unwrapGtkBinClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GtkFrame (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGtkFrameClass(my_GtkFrameClass_t* class) +{ + bridgeGtkBinClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GtkFrame (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + // No more wrap/unwrap #undef WRAPPER #undef FIND diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 91688a6a..c05b8830 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -2552,6 +2552,8 @@ wrappedgtkx112: - gtk_widget_style_get_valist - uFupp: - gtk_timeout_add +- pFppp: + - gtk_link_button_set_uri_hook - vFppiV: - gtk_list_store_insert_with_values - vFppup: diff --git a/src/wrapped/generated/wrappedgtkx112types.h b/src/wrapped/generated/wrappedgtkx112types.h index bb05d866..7616cb6b 100644 --- a/src/wrapped/generated/wrappedgtkx112types.h +++ b/src/wrapped/generated/wrappedgtkx112types.h @@ -21,6 +21,7 @@ typedef void (*vFppp_t)(void*, void*, void*); typedef void (*vFppV_t)(void*, void*, ...); typedef void (*vFppA_t)(void*, void*, va_list); typedef uint64_t (*uFupp_t)(uint64_t, void*, void*); +typedef void* (*pFppp_t)(void*, void*, void*); typedef void (*vFppiV_t)(void*, void*, int64_t, ...); typedef void (*vFppup_t)(void*, void*, uint64_t, void*); typedef void (*vFpppp_t)(void*, void*, void*, void*); @@ -67,6 +68,7 @@ typedef void* (*pFpipppppppi_t)(void*, int64_t, void*, void*, void*, void*, void GO(gtk_tree_model_get_valist, vFppA_t) \ GO(gtk_widget_style_get_valist, vFppA_t) \ GO(gtk_timeout_add, uFupp_t) \ + GO(gtk_link_button_set_uri_hook, pFppp_t) \ GO(gtk_list_store_insert_with_values, vFppiV_t) \ GO(gtk_action_group_add_actions, vFppup_t) \ GO(gtk_clipboard_request_contents, vFpppp_t) \ diff --git a/src/wrapped/wrappedgobject2.c b/src/wrapped/wrappedgobject2.c index cf57f98d..043ef63e 100755 --- a/src/wrapped/wrappedgobject2.c +++ b/src/wrapped/wrappedgobject2.c @@ -21,7 +21,7 @@ const char* gobject2Name = "libgobject-2.0.so.0"; #define LIBNAME gobject2 -library_t *my_lib = NULL; +static library_t *my_lib = NULL; typedef size_t(*LFv_t)(void); typedef void*(*pFL_t)(size_t); @@ -57,7 +57,7 @@ void freeGobject2My(void* lib) //gobject2_my_t *my = (gobject2_my_t *)lib; } -static int signal_cb(void* a, void* b, void* c, void* d) +static int signal_cb(void* a, void* b, void* c, void* d, void* e) { // signal can have many signature... so first job is to find the data! // hopefully, no callback have more than 4 arguments... @@ -79,14 +79,20 @@ static int signal_cb(void* a, void* b, void* c, void* d) sig = (my_signal_t*)d; i = 4; } - printf_log(LOG_DEBUG, "gobject2 Signal called, sig=%p, handler=%p, NArgs=%d\n", sig, (void*)sig->c_handler, i); + if(!sig && my_signal_is_valid(e)) { + sig = (my_signal_t*)e; + i = 5; + printf_log(LOG_DEBUG, "Warning, GObject2 signal callback with 5 args found, sig=%p!\n", sig); + } + printf_log(LOG_DEBUG, "gobject2 Signal called, sig=%p, handler=%p, NArgs=%d\n", sig, sig?(void*)sig->c_handler:NULL, i); switch(i) { case 1: return (int)RunFunction(my_context, sig->c_handler, 1, sig->data); case 2: return (int)RunFunction(my_context, sig->c_handler, 2, a, sig->data); case 3: return (int)RunFunction(my_context, sig->c_handler, 3, a, b, sig->data); case 4: return (int)RunFunction(my_context, sig->c_handler, 4, a, b, c, sig->data); + case 5: return (int)RunFunction(my_context, sig->c_handler, 5, a, b, c, d, sig->data); } - printf_log(LOG_NONE, "Warning, GObject2 signal callback but no data found!"); + printf_log(LOG_NONE, "Warning, GObject2 signal callback but no data found!\n"); return 0; } static int signal_cb_swapped(my_signal_t* sig, void* b, void* c, void* d) @@ -210,12 +216,22 @@ EXPORT uintptr_t my_g_signal_connect_data(x64emu_t* emu, void* instance, void* d uintptr_t ret = 0; #define GO(A, B) if(strcmp((const char*)detailed, A)==0) ret = my->g_signal_connect_data(instance, detailed, (flags&2)?((void*)signal_cb_swapped_##B):((void*)signal_cb_##B), sig, signal_delete, flags); GO("query-tooltip", 6) // GtkWidget + else GO("query_tooltip", 6) else GO("selection-get", 5) //GtkWidget + else GO("selection_get", 5) else GO("drag-data-get", 5) //GtkWidget else GO("drag-data-received", 8) //GtkWidget + else GO("drag_data_received", 8) else GO("drag-drop", 6) //GtkWidget + else GO("drag_drop", 6) else GO("drag-motion", 6) //GtkWidget + else GO("drag_motion", 6) else GO("expand-collapse-cursor-row", 5) //GtkTreeView + else GO("expand_collapse_cursor_row", 5) + else GO("insert-text", 5) // GtkEditable + else GO("insert_text", 5) + else GO("move-cursor", 5) // GtkEntry + else GO("move_cursor", 5) else ret = my->g_signal_connect_data(instance, detailed, (flags&2)?((void*)signal_cb_swapped):((void*)signal_cb), sig, signal_delete, flags); #undef GO @@ -264,7 +280,12 @@ GO(3) \ GO(4) \ GO(5) \ GO(6) \ -GO(7) +GO(7) \ +GO(8) \ +GO(9) \ +GO(10) \ +GO(11) \ +GO(12) \ #define GO(A) \ static uintptr_t my_copy_fct_##A = 0; \ @@ -625,7 +646,7 @@ EXPORT uint32_t my_g_signal_handlers_block_matched(x64emu_t* emu, void* instance gobject2_my_t *my = (gobject2_my_t*)my_lib->priv.w.p2; // NOTE that I have no idea of the fnc signature!... - if (fnc) printf_log(LOG_INFO, "Warning, gobject g_signal_handlers_block_matched called with non null function \n"); + if (fnc) printf_log(LOG_DEBUG, "Warning, gobject g_signal_handlers_block_matched called with non null function \n"); fnc = findMarshalFct(fnc); //... just in case return my->g_signal_handlers_block_matched(instance, mask, signal, detail, closure, fnc, data); } @@ -635,7 +656,7 @@ EXPORT uint32_t my_g_signal_handlers_unblock_matched(x64emu_t* emu, void* instan gobject2_my_t *my = (gobject2_my_t*)my_lib->priv.w.p2; // NOTE that I have no idea of the fnc signature!... - if (fnc) printf_log(LOG_INFO, "Warning, gobject g_signal_handlers_unblock_matched called with non null function \n"); + if (fnc) printf_log(LOG_DEBUG, "Warning, gobject g_signal_handlers_unblock_matched called with non null function \n"); fnc = findMarshalFct(fnc); //... just in case return my->g_signal_handlers_unblock_matched(instance, mask, signal, detail, closure, fnc, data); } @@ -645,7 +666,7 @@ EXPORT uint32_t my_g_signal_handlers_disconnect_matched(x64emu_t* emu, void* ins gobject2_my_t *my = (gobject2_my_t*)my_lib->priv.w.p2; // NOTE that I have no idea of the fnc signature!... - if (fnc) printf_log(LOG_INFO, "Warning, gobject g_signal_handlers_disconnect_matched called with non null function \n"); + if (fnc) printf_log(LOG_DEBUG, "Warning, gobject g_signal_handlers_disconnect_matched called with non null function \n"); fnc = findMarshalFct(fnc); //... just in case return my->g_signal_handlers_disconnect_matched(instance, mask, signal, detail, closure, fnc, data); } @@ -655,7 +676,7 @@ EXPORT unsigned long my_g_signal_handler_find(x64emu_t* emu, void* instance, int gobject2_my_t *my = (gobject2_my_t*)my_lib->priv.w.p2; // NOTE that I have no idea of the fnc signature!... - if (fnc) printf_log(LOG_INFO, "Warning, gobject g_signal_handler_find called with non null function \n"); + if (fnc) printf_log(LOG_DEBUG, "Warning, gobject g_signal_handler_find called with non null function \n"); fnc = findMarshalFct(fnc); //... just in case return my->g_signal_handler_find(instance, mask, signal, detail, closure, fnc, data); } diff --git a/src/wrapped/wrappedgtkx112.c b/src/wrapped/wrappedgtkx112.c index b288aa89..219d14fb 100755 --- a/src/wrapped/wrappedgtkx112.c +++ b/src/wrapped/wrappedgtkx112.c @@ -21,55 +21,27 @@ const char* gtkx112Name = "libgtk-x11-2.0.so.0"; static char* libname = NULL; +static library_t* my_lib = NULL; #define LIBNAME gtkx112 typedef size_t (*LFv_t)(void); -typedef void* (*pFi_t)(int); -typedef void (*vFp_t)(void*); typedef int (*iFp_t)(void*); +typedef void (*vFp_t)(void*); typedef void* (*pFp_t)(void*); typedef double (*dFp_t)(void*); typedef void* (*pFL_t)(size_t); -typedef int (*iFip_t)(int, void*); typedef void* (*pFip_t)(int, void*); -typedef int (*iFpp_t)(void*, void*); -typedef size_t (*LFLp_t)(size_t, void*); -typedef void* (*pFpp_t)(void*, void*); -typedef void* (*pFpi_t)(void*, int); typedef void* (*pFpL_t)(void*, size_t); -typedef void (*vFpp_t)(void*, void*); typedef void (*vFppi_t)(void*, void*, int); -typedef void* (*pFppi_t)(void*, void*, int32_t); -typedef void (*vFppA_t)(void*, void*, va_list); typedef int32_t (*iFppp_t)(void*, void*, void*); -typedef void (*vFppp_t)(void*, void*, void*); -typedef uint32_t (*uFupp_t)(uint32_t, void*, void*); +typedef void* (*pFppi_t)(void*, void*, int32_t); typedef void (*vFpipV_t)(void*, int, void*, ...); -typedef int (*iFpppp_t)(void*, void*, void*, void*); -typedef void (*vFpppp_t)(void*, void*, void*, void*); -typedef void (*vFppup_t)(void*, void*, uint32_t, void*); typedef unsigned long (*LFppppi_t)(void*, void*, void*, void*, int); -typedef void (*vFpippp_t)(void*, int, void*, void*, void*); -typedef void (*vFppppp_t)(void*, void*, void*, void*, void*); typedef void (*vFpuipp_t)(void*, uint32_t, int, void*, void*); -typedef void (*vFppupp_t)(void*, void*, uint32_t, void*, void*); -typedef uint32_t (*uFiipppp_t)(int, int, void*, void*, void*, void*); -typedef void (*vFppippi_t)(void*, void*, int, void*, void*, int); typedef unsigned long (*LFpppppi_t)(void*, void*, void*, void*, void*, int); -typedef int (*iFpppppp_t)(void*, void*, void*, void*, void*, void*); -typedef void (*vFpuipuV_t)(void*, uint32_t, int, void*, uint32_t, ...); -typedef int (*iFppuppp_t)(void*, void*, uint32_t, void*, void*, void*); -typedef void* (*pFppppppi_t)(void*, void*, void*, void*, void*, void*, int); -typedef void* (*pFppppppp_t)(void*, void*, void*, void*, void*, void*, void*); -typedef void* (*pFpppppppi_t)(void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*vFpppppuu_t)(void*, void*, void*, void*, void*, uint32_t, uint32_t); -typedef unsigned long (*LFppppppii_t)(void*, void*, void*, void*, void*, void*, int32_t, int32_t); -typedef void* (*pFpippppppp_t)(void*, int, void*, void*, void*, void*, void*, void*, void*); -typedef void* (*pFpipppppppi_t)(void*, int, void*, void*, void*, void*, void*, void*, void*, int); -#define SUPER() \ +#define ADDED_FUNCTIONS() \ GO(gtk_object_get_type, LFv_t) \ - GO(gtk_object_set_data_full, vFpppp_t) \ GO(g_type_check_instance_cast, pFpL_t) \ GO(gtk_bin_get_type, LFv_t) \ GO(gtk_widget_get_type, LFv_t) \ @@ -81,65 +53,33 @@ typedef void* (*pFpipppppppi_t)(void*, int, void*, void*, void*, void*, GO(gtk_window_get_type, LFv_t) \ GO(gtk_table_get_type, LFv_t) \ GO(gtk_fixed_get_type, LFv_t) \ - GO(gtk_type_class, pFL_t) \ - GO(gtk_button_get_label, pFp_t) \ - GO(gtk_signal_connect_full, LFppppppii_t) \ - GO(gtk_dialog_add_button, pFppi_t) \ - GO(gtk_message_dialog_format_secondary_text, vFpp_t) \ - GO(gtk_message_dialog_format_secondary_markup, vFpp_t) \ - GO(gtk_init, vFpp_t) \ - GO(gtk_init_check, iFpp_t) \ - GO(gtk_init_with_args, iFpppppp_t) \ - GO(gtk_menu_attach_to_widget, vFppp_t) \ - GO(gtk_menu_popup, vFpppppuu_t) \ - GO(gtk_timeout_add, uFupp_t) \ - GO(gtk_clipboard_set_with_data, iFppuppp_t) \ - GO(gtk_clipboard_set_with_owner, iFppuppp_t)\ - GO(gtk_stock_set_translate_func, vFpppp_t) \ - GO(gtk_container_forall, vFppp_t) \ - GO(gtk_tree_view_set_search_equal_func, vFpppp_t) \ - GO(gtk_text_iter_backward_find_char, iFpppp_t) \ - GO(gtk_text_iter_forward_find_char, iFpppp_t) \ - GO(gtk_toolbar_append_item, pFppppppp_t) \ - GO(gtk_toolbar_prepend_item, pFppppppp_t) \ - GO(gtk_toolbar_insert_item, pFpppppppi_t) \ - GO(gtk_toolbar_append_element, pFpippppppp_t) \ - GO(gtk_toolbar_prepend_element, pFpippppppp_t) \ - GO(gtk_toolbar_insert_element, pFpipppppppi_t) \ - GO(gtk_toolbar_insert_stock, pFppppppi_t) \ - GO(gtk_tree_sortable_set_sort_func, vFpippp_t) \ - GO(gtk_tree_sortable_set_default_sort_func, vFpppp_t)\ - GO(gtk_type_unique, LFLp_t) \ - GO(gtk_spin_button_get_value, dFp_t) \ - GO(gtk_builder_connect_signals_full, vFppp_t) \ + GO(gtk_combo_box_get_type, LFv_t) \ + GO(gtk_toggle_button_get_type, LFv_t) \ + GO(gtk_check_button_get_type, LFv_t) \ + GO(gtk_frame_get_type, LFv_t) \ + GO(gtk_entry_get_type, LFv_t) \ + GO(gtk_spin_button_get_type, LFv_t) \ + GO(gtk_progress_get_type, LFv_t) \ + GO(gtk_progress_bar_get_type, LFv_t) \ GO(gtk_action_get_type, LFv_t) \ - GO(gtk_binding_entry_add_signall, vFpuipp_t)\ - GO(gtk_binding_entry_add_signal, vFpuipuV_t)\ - GO(gtk_container_foreach, vFppp_t) \ - GO(gtk_cell_layout_set_cell_data_func, vFppppp_t) \ - GO(g_module_close, iFp_t) \ - GO(g_module_open, pFpi_t) \ - GO(g_module_supported, LFv_t) \ - GO(g_module_symbol, iFppp_t) \ - GO(g_log, vFpipV_t) \ GO(g_type_class_ref, pFL_t) \ GO(g_type_class_unref, vFp_t) \ + GO(gtk_button_get_label, pFp_t) \ + GO(gtk_spin_button_get_value, dFp_t) \ + GO(gtk_binding_entry_add_signall, vFpuipp_t)\ GO(g_signal_connect_object, LFppppi_t) \ + GO(gtk_dialog_add_button, pFppi_t) \ GO(g_signal_connect_data, LFpppppi_t) \ - GO(gtk_action_group_add_actions, vFppup_t) \ - GO(gtk_action_group_add_actions_full, vFppupp_t) \ - GO(gtk_tree_model_foreach, vFppp_t) \ - GO(gtk_clipboard_request_text, vFppp_t) \ - GO(gtk_clipboard_request_contents, vFpppp_t)\ - GO(gtk_input_add_full, uFiipppp_t) \ - GO(gtk_list_store_set_valist, vFppA_t) \ - GO(gtk_widget_style_get_valist, vFppA_t) \ - GO(gtk_list_store_insert_with_valuesv, vFppippi_t) \ GO(gtk_list_store_newv, pFip_t) \ GO(gtk_tree_store_newv, pFip_t) \ GO(gtk_list_store_insert, vFppi_t) \ - GO(gtk_tree_model_get_valist, vFppA_t) \ + GO(g_module_close, iFp_t) \ + GO(g_module_open, pFpi_t) \ + GO(g_module_supported, LFv_t) \ + GO(g_module_symbol, iFppp_t) \ + GO(g_log, vFpipV_t) \ +#include "generated/wrappedgtkx112types.h" typedef struct gtkx112_my_s { @@ -152,6 +92,7 @@ typedef struct gtkx112_my_s { void* getGtkx112My(library_t* lib) { + my_lib = lib; gtkx112_my_t* my = (gtkx112_my_t*)calloc(1, sizeof(gtkx112_my_t)); #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); SUPER() @@ -165,14 +106,14 @@ void* getGtkx112My(library_t* lib) void freeGtkx112My(void* lib) { //gtkx112_my_t *my = (gtkx112_my_t *)lib; + my_lib = NULL; } static box64context_t* context = NULL; EXPORT uintptr_t my_gtk_signal_connect_full(x64emu_t* emu, void* object, void* name, void* c_handler, void* unsupported, void* data, void* closure, uint32_t signal, int after) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; if(!context) context = emu->context; @@ -640,12 +581,44 @@ static void* findGtkCallbackMarshalFct(void* fct) return NULL; } +// GtkLinkButtonUri ... +#define GO(A) \ +static uintptr_t my_GtkLinkButtonUri_fct_##A = 0; \ +static void my_GtkLinkButtonUri_##A(void* a, void* b, void* c) \ +{ \ + RunFunction(my_context, my_GtkLinkButtonUri_fct_##A, 3, a, b, c); \ +} +SUPER() +#undef GO +static void* find_GtkLinkButtonUri_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_GtkLinkButtonUri_fct_##A == (uintptr_t)fct) return my_GtkLinkButtonUri_##A; + SUPER() + #undef GO + #define GO(A) if(my_GtkLinkButtonUri_fct_##A == 0) {my_GtkLinkButtonUri_fct_##A = (uintptr_t)fct; return my_GtkLinkButtonUri_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for gtk-2 GtkLinkButtonUri callback\n"); + return NULL; +} +static void* reverse_GtkLinkButtonUri_Fct(void* fct) +{ + if(!fct) return fct; + if(CheckBridged(my_lib->priv.w.bridge, fct)) + return (void*)CheckBridged(my_lib->priv.w.bridge, fct); + #define GO(A) if(my_GtkLinkButtonUri_##A == fct) return (void*)my_GtkLinkButtonUri_fct_##A; + SUPER() + #undef GO + return (void*)AddBridge(my_lib->priv.w.bridge, vFppp, fct, 0, NULL); +} + #undef SUPER EXPORT void my_gtk_dialog_add_buttons(x64emu_t* emu, void* dialog, void* first, uintptr_t* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; void* btn = first; int n = 0; @@ -658,8 +631,7 @@ EXPORT void my_gtk_dialog_add_buttons(x64emu_t* emu, void* dialog, void* first, EXPORT void my_gtk_message_dialog_format_secondary_text(x64emu_t* emu, void* dialog, void* fmt, void* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; char* buf = NULL; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 2); @@ -673,8 +645,7 @@ EXPORT void my_gtk_message_dialog_format_secondary_text(x64emu_t* emu, void* dia EXPORT void my_gtk_message_dialog_format_secondary_markup(x64emu_t* emu, void* dialog, void* fmt, void* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; char* buf = NULL; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 2); @@ -688,8 +659,7 @@ EXPORT void my_gtk_message_dialog_format_secondary_markup(x64emu_t* emu, void* d EXPORT void my_gtk_list_store_set_valist(x64emu_t* emu, void* list, void* iter, x64_va_list_t V) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; #ifdef CONVERT_VALIST CONVERT_VALIST(V); @@ -701,8 +671,7 @@ EXPORT void my_gtk_list_store_set_valist(x64emu_t* emu, void* list, void* iter, EXPORT void my_gtk_list_store_set(x64emu_t* emu, void* list, void* iter, uintptr_t* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; CREATE_VALIST_FROM_VAARG(b, emu->scratch, 2); my->gtk_list_store_set_valist(list, iter, VARARGS); @@ -710,8 +679,7 @@ EXPORT void my_gtk_list_store_set(x64emu_t* emu, void* list, void* iter, uintptr EXPORT void my_gtk_widget_style_get_valist(x64emu_t* emu, void* widget, void* first, x64_va_list_t V) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; #ifdef CONVERT_VALIST CONVERT_VALIST(V); @@ -723,8 +691,7 @@ EXPORT void my_gtk_widget_style_get_valist(x64emu_t* emu, void* widget, void* fi EXPORT void my_gtk_widget_style_get(x64emu_t* emu, void* widget, void* first, uintptr_t* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; CREATE_VALIST_FROM_VAARG(b, emu->scratch, 2); my->gtk_widget_style_get_valist(widget, first, VARARGS); @@ -732,8 +699,7 @@ EXPORT void my_gtk_widget_style_get(x64emu_t* emu, void* widget, void* first, ui EXPORT void* my_gtk_type_class(x64emu_t* emu, size_t type) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; void* class = my->gtk_type_class(type); return wrapCopyGTKClass(class, type); @@ -741,8 +707,7 @@ EXPORT void* my_gtk_type_class(x64emu_t* emu, size_t type) EXPORT void my_gtk_init(x64emu_t* emu, void* argc, void* argv) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_init(argc, argv); my_checkGlobalGdkDisplay(); @@ -751,8 +716,7 @@ EXPORT void my_gtk_init(x64emu_t* emu, void* argc, void* argv) EXPORT int my_gtk_init_check(x64emu_t* emu, void* argc, void* argv) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; int ret = my->gtk_init_check(argc, argv); my_checkGlobalGdkDisplay(); @@ -762,8 +726,7 @@ EXPORT int my_gtk_init_check(x64emu_t* emu, void* argc, void* argv) EXPORT int my_gtk_init_with_args(x64emu_t* emu, void* argc, void* argv, void* param, void* entries, void* trans, void* error) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; int ret = my->gtk_init_with_args(argc, argv, param, entries, trans, error); my_checkGlobalGdkDisplay(); @@ -773,40 +736,35 @@ EXPORT int my_gtk_init_with_args(x64emu_t* emu, void* argc, void* argv, void* pa EXPORT void my_gtk_menu_attach_to_widget(x64emu_t* emu, void* menu, void* widget, void* f) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_menu_attach_to_widget(menu, widget, findMenuDetachFct(f)); } EXPORT void my_gtk_menu_popup(x64emu_t* emu, void* menu, void* shell, void* item, void* f, void* data, uint32_t button, uint32_t time_) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_menu_popup(menu, shell, item, findMenuPositionFct(f), data, button, time_); } EXPORT uint32_t my_gtk_timeout_add(x64emu_t* emu, uint32_t interval, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_timeout_add(interval, findGtkFunctionFct(f), data); } EXPORT int my_gtk_clipboard_set_with_data(x64emu_t* emu, void* clipboard, void* target, uint32_t n, void* f_get, void* f_clear, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_clipboard_set_with_data(clipboard, target, n, findClipboadGetFct(f_get), findClipboadClearFct(f_clear), data); } EXPORT int my_gtk_clipboard_set_with_owner(x64emu_t* emu, void* clipboard, void* target, uint32_t n, void* f_get, void* f_clear, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_clipboard_set_with_owner(clipboard, target, n, findClipboadGetFct(f_get), findClipboadClearFct(f_clear), data); } @@ -818,8 +776,7 @@ static void* my_translate_func(void* path, my_signal_t* sig) EXPORT void my_gtk_stock_set_translate_func(x64emu_t* emu, void* domain, void* f, void* data, void* notify) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my_signal_t *sig = new_mysignal(f, data, notify); my->gtk_stock_set_translate_func(domain, my_translate_func, sig, my_signal_delete); @@ -827,114 +784,100 @@ EXPORT void my_gtk_stock_set_translate_func(x64emu_t* emu, void* domain, void* f EXPORT void my_gtk_container_forall(x64emu_t* emu, void* container, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_container_forall(container, findGtkCallbackFct(f), data); } EXPORT void my_gtk_tree_view_set_search_equal_func(x64emu_t* emu, void* tree_view, void* f, void* data, void* notify) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_tree_view_set_search_equal_func(tree_view, findGtkTreeViewSearchEqualFuncFct(f), data, findGDestroyNotifyFct(notify)); } EXPORT int my_gtk_text_iter_backward_find_char(x64emu_t* emu, void* iter, void* f, void* data, void* limit) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_text_iter_backward_find_char(iter, findGtkTextCharPredicateFct(f), data, limit); } EXPORT int my_gtk_text_iter_forward_find_char(x64emu_t* emu, void* iter, void* f, void* data, void* limit) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_text_iter_forward_find_char(iter, findGtkTextCharPredicateFct(f), data, limit); } EXPORT void* my_gtk_toolbar_append_item(x64emu_t* emu, void* toolbar, void* text, void* tooltip_text, void* tooltip_private, void* icon, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_toolbar_append_item(toolbar, text, tooltip_text, tooltip_private, icon, findToolbarFct(f), data); } EXPORT void* my_gtk_toolbar_prepend_item(x64emu_t* emu, void* toolbar, void* text, void* tooltip_text, void* tooltip_private, void* icon, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_toolbar_prepend_item(toolbar, text, tooltip_text, tooltip_private, icon, findToolbarFct(f), data); } EXPORT void* my_gtk_toolbar_insert_item(x64emu_t* emu, void* toolbar, void* text, void* tooltip_text, void* tooltip_private, void* icon, void* f, void* data, int position) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_toolbar_insert_item(toolbar, text, tooltip_text, tooltip_private, icon, findToolbarFct(f), data, position); } EXPORT void* my_gtk_toolbar_append_element(x64emu_t* emu, void* toolbar, size_t type, void* widget, void* text, void* tooltip_text, void* tooltip_private, void* icon, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_toolbar_append_element(toolbar, type, widget, text, tooltip_text, tooltip_private, icon, findToolbarFct(f), data); } EXPORT void* my_gtk_toolbar_prepend_element(x64emu_t* emu, void* toolbar, size_t type, void* widget, void* text, void* tooltip_text, void* tooltip_private, void* icon, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_toolbar_prepend_element(toolbar, type, widget, text, tooltip_text, tooltip_private, icon, findToolbarFct(f), data); } EXPORT void* my_gtk_toolbar_insert_element(x64emu_t* emu, void* toolbar, size_t type, void* widget, void* text, void* tooltip_text, void* tooltip_private, void* icon, void* f, void* data, int position) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_toolbar_insert_element(toolbar, type, widget, text, tooltip_text, tooltip_private, icon, findToolbarFct(f), data, position); } EXPORT void* my_gtk_toolbar_insert_stock(x64emu_t* emu, void* toolbar, void* stock_id, void* tooltip_text, void* tooltip_private, void* f, void* data, int position) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_toolbar_insert_stock(toolbar, stock_id, tooltip_text, tooltip_private, findToolbarFct(f), data, position); } EXPORT void my_gtk_tree_sortable_set_sort_func(x64emu_t* emu, void* sortable, int id, void* f, void* data, void* notify) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_tree_sortable_set_sort_func(sortable, id, findGtkTreeIterCompareFuncFct(f), data, findGDestroyNotifyFct(notify)); } EXPORT void my_gtk_tree_sortable_set_default_sort_func(x64emu_t* emu, void* sortable, void* f, void* data, void* notify) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_tree_sortable_set_default_sort_func(sortable, findGtkTreeIterCompareFuncFct(f), data, findGDestroyNotifyFct(notify)); } EXPORT size_t my_gtk_type_unique(x64emu_t* emu, size_t parent, my_GtkTypeInfo_t* gtkinfo) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; - return my->gtk_type_unique(parent, findFreeGtkTypeInfo(gtkinfo, parent)); + return my->gtk_type_unique((void*)parent, findFreeGtkTypeInfo(gtkinfo, parent)); } EXPORT unsigned long my_gtk_signal_connect(x64emu_t* emu, void* object, void* name, void* func, void* data) @@ -944,16 +887,14 @@ EXPORT unsigned long my_gtk_signal_connect(x64emu_t* emu, void* object, void* na EXPORT void my_gtk_object_set_data_full(x64emu_t* emu, void* object, void* key, void* data, void* notify) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_object_set_data_full(object, key, data, findGDestroyNotifyFct(notify)); } EXPORT float my_gtk_spin_button_get_value_as_float(x64emu_t* emu, void* spinner) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_spin_button_get_value(spinner); } @@ -973,8 +914,7 @@ typedef struct dummy_gtk1_button_s { EXPORT void* my_gtk_type_check_object_cast(x64emu_t* emu, void* obj, size_t type) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; if(my->gtk1 && type==my->gtk_bin_get_type()) { @@ -997,8 +937,7 @@ EXPORT void* my_gtk_type_check_object_cast(x64emu_t* emu, void* obj, size_t type EXPORT void my_gtk_builder_connect_signals_full(x64emu_t* emu, void* builder, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_builder_connect_signals_full(builder, findBuilderConnectFct(f), data); } @@ -1010,8 +949,7 @@ typedef struct my_GSList_s { EXPORT void my_gtk_binding_entry_add_signal(x64emu_t* emu, void* binding, uint32_t keyval, int mod, void* name, uint32_t n, uintptr_t* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; if(!n) { my->gtk_binding_entry_add_signal(binding, keyval, mod, name, 0); return; @@ -1030,16 +968,14 @@ EXPORT void my_gtk_binding_entry_add_signal(x64emu_t* emu, void* binding, uint32 EXPORT void my_gtk_container_foreach(x64emu_t* emu, void* container, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_container_foreach(container, findGtkCallbackFct(f), data); } EXPORT void my_gtk_cell_layout_set_cell_data_func(x64emu_t* emu, void* layout, void* cell, void* f, void* data, void* notify) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_cell_layout_set_cell_data_func(layout, cell, findGtkCellLayoutDataFuncFct(f), data, findGDestroyNotifyFct(notify)); } @@ -1093,8 +1029,7 @@ static void my_gtk_builder_connect_signals_custom(void* builder, EXPORT void my_gtk_builder_connect_signals(x64emu_t* emu, void* builder, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my_ConnectArgs_t args; @@ -1119,8 +1054,7 @@ typedef struct my_GtkActionEntry_s { EXPORT void my_gtk_action_group_add_actions(x64emu_t* emu, void* action_group, my_GtkActionEntry_t* entries, uint32_t n, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my_GtkActionEntry_t myentries[n]; memcpy(myentries, entries, n*sizeof(my_GtkActionEntry_t)); @@ -1131,8 +1065,7 @@ EXPORT void my_gtk_action_group_add_actions(x64emu_t* emu, void* action_group, m EXPORT void my_gtk_action_group_add_actions_full(x64emu_t* emu, void* action_group, my_GtkActionEntry_t* entries, uint32_t n, void* data, void* destroy) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my_GtkActionEntry_t myentries[n]; memcpy(myentries, entries, n*sizeof(my_GtkActionEntry_t)); @@ -1143,16 +1076,14 @@ EXPORT void my_gtk_action_group_add_actions_full(x64emu_t* emu, void* action_gro EXPORT void my_gtk_tree_model_foreach(x64emu_t* emu, void* model, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_tree_model_foreach(model, findGtkTreeModelForeachFuncFct(f), data); } EXPORT void my_gtk_clipboard_request_contents(x64emu_t* emu, void* clipboard, void* target, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_clipboard_request_contents(clipboard, target, findGtkClipboardReceivedFuncFct(f), data); } @@ -1160,24 +1091,21 @@ EXPORT void my_gtk_clipboard_request_contents(x64emu_t* emu, void* clipboard, vo EXPORT void my_gtk_clipboard_request_text(x64emu_t* emu, void* clipboard, void* f, void* data) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; my->gtk_clipboard_request_text(clipboard, findGtkClipboardTextReceivedFuncFct(f), data); } EXPORT uint32_t my_gtk_input_add_full(x64emu_t* emu, int source, int condition, void* func, void* marshal, void* data, void* destroy) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; return my->gtk_input_add_full(source, condition, findGdkInputFunctionFct(func), findGtkCallbackMarshalFct(marshal), data, findGDestroyNotifyFct(destroy)); } EXPORT void my_gtk_list_store_insert_with_values(x64emu_t* emu, void* store, void* iter, int pos, uintptr_t* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; CREATE_VALIST_FROM_VAARG(b, emu->scratch, 3); // not 100% exact, but better than nothing @@ -1189,8 +1117,7 @@ EXPORT void my_gtk_list_store_insert_with_values(x64emu_t* emu, void* store, voi EXPORT void* my_gtk_list_store_new(x64emu_t* emu, int n, uintptr_t* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; uintptr_t a[n]; for(int i=0; i<n; ++i) @@ -1200,8 +1127,7 @@ EXPORT void* my_gtk_list_store_new(x64emu_t* emu, int n, uintptr_t* b) EXPORT void* my_gtk_tree_store_new(x64emu_t* emu, int n, uintptr_t* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; uintptr_t a[n]; for(int i=0; i<n; ++i) @@ -1211,8 +1137,7 @@ EXPORT void* my_gtk_tree_store_new(x64emu_t* emu, int n, uintptr_t* b) EXPORT void my_gtk_tree_model_get_valist(x64emu_t* emu, void* tree, void* iter, x64_va_list_t V) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; #ifdef CONVERT_VALIST CONVERT_VALIST(V); @@ -1224,13 +1149,20 @@ EXPORT void my_gtk_tree_model_get_valist(x64emu_t* emu, void* tree, void* iter, EXPORT void my_gtk_tree_model_get(x64emu_t* emu, void* tree, void* iter, uintptr_t* b) { - library_t * lib = GetLibInternal(libname); - gtkx112_my_t *my = (gtkx112_my_t*)lib->priv.w.p2; + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; CREATE_VALIST_FROM_VAARG(b, emu->scratch, 2); my->gtk_tree_model_get_valist(tree, iter, VARARGS); } +EXPORT void* my_gtk_link_button_set_uri_hook(x64emu_t* emu, void* f, void* data, void* d) +{ + gtkx112_my_t *my = (gtkx112_my_t*)my_lib->priv.w.p2; + + void* ret = my->gtk_link_button_set_uri_hook(find_GtkLinkButtonUri_Fct(f), data, findGDestroyNotifyFct(d)); + return reverse_GtkLinkButtonUri_Fct(ret); +} + #define PRE_INIT \ if(box64_nogtk) \ return -1; @@ -1249,6 +1181,15 @@ EXPORT void my_gtk_tree_model_get(x64emu_t* emu, void* tree, void* iter, uintptr SetGtkWindowID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_window_get_type()); \ SetGtkTableID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_table_get_type()); \ SetGtkFixedID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_fixed_get_type()); \ + SetGtkButtonID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_button_get_type()); \ + SetGtkComboBoxID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_combo_box_get_type());\ + SetGtkToggleButtonID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_toggle_button_get_type());\ + SetGtkCheckButtonID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_check_button_get_type());\ + SetGtkEntryID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_entry_get_type()); \ + SetGtkSpinButtonID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_spin_button_get_type());\ + SetGtkProgressID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_progress_get_type()); \ + SetGtkProgressBarID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_progress_bar_get_type());\ + SetGtkFrameID(((gtkx112_my_t*)lib->priv.w.p2)->gtk_frame_get_type()); \ lib->priv.w.needed = 2; \ lib->priv.w.neededlibs = (char**)calloc(lib->priv.w.needed, sizeof(char*)); \ lib->priv.w.neededlibs[0] = strdup("libgdk-x11-2.0.so.0"); \ diff --git a/src/wrapped/wrappedgtkx112_private.h b/src/wrapped/wrappedgtkx112_private.h index dbb5b53a..b896ea16 100755 --- a/src/wrapped/wrappedgtkx112_private.h +++ b/src/wrapped/wrappedgtkx112_private.h @@ -1173,7 +1173,7 @@ GO(gtk_hbutton_box_new, pFv) GO(gtk_hbutton_box_set_layout_default, vFi) GO(gtk_hbutton_box_set_spacing_default, vFi) GO(gtk_hpaned_get_type, LFv) -//GO(gtk_hpaned_new, +GO(gtk_hpaned_new, pFv) GO(gtk_hruler_get_type, LFv) //GO(gtk_hruler_new, GO(gtk_hscale_get_type, LFv) @@ -1529,13 +1529,13 @@ GO(gtk_layout_new, pFpp) //GO(gtk_layout_set_vadjustment, //GO(gtk_layout_thaw, GO(gtk_link_button_get_type, LFv) -//GO(gtk_link_button_get_uri, -//GO(gtk_link_button_get_visited, -//GO(gtk_link_button_new, -//GO(gtk_link_button_new_with_label, -//GO(gtk_link_button_set_uri, -//GO(gtk_link_button_set_uri_hook, -//GO(gtk_link_button_set_visited, +GO(gtk_link_button_get_uri, pFp) +GO(gtk_link_button_get_visited, iFp) +GO(gtk_link_button_new, pFp) +GO(gtk_link_button_new_with_label, pFpp) +GO(gtk_link_button_set_uri, vFpp) +GOM(gtk_link_button_set_uri_hook, pFEppp) +GO(gtk_link_button_set_visited, vFpi) GO(gtk_list_append_items, vFpp) GO(gtk_list_child_position, iFpp) GO(gtk_list_clear_items, vFpii) diff --git a/src/wrapped/wrappedpango_private.h b/src/wrapped/wrappedpango_private.h index 32b1c3d2..b8e5415f 100755 --- a/src/wrapped/wrappedpango_private.h +++ b/src/wrapped/wrappedpango_private.h @@ -399,12 +399,12 @@ GO(pango_tab_array_resize, vFpi) GO(pango_tab_array_set_tab, vFpiii) GO(pango_trim_string, pFp) GO(pango_underline_get_type, iFv) -//GO(pango_unichar_direction, +GO(pango_unichar_direction, iFu) GO(pango_units_from_double, iFd) GO(pango_units_to_double, dFi) -//GO(pango_variant_get_type, -//GO(pango_version, -//GO(pango_version_check, -//GO(pango_version_string, +GO(pango_variant_get_type, pFv) +GO(pango_version, iFv) +GO(pango_version_check, pFiii) +GO(pango_version_string, pFv) GO(pango_weight_get_type, iFv) GO(pango_wrap_mode_get_type, iFv) |