about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorlizhuoheng <114734429+LiZhuoheng-coder@users.noreply.github.com>2023-04-23 16:52:30 +0800
committerGitHub <noreply@github.com>2023-04-23 10:52:30 +0200
commit531cb899437778732a2e5372268102acdbe28f51 (patch)
tree1c215ea1213f71037b94dae41cae1f1cc98fc3e0 /src
parent24ead2f125464a8e1faef3248523f5d42e9898ef (diff)
downloadbox64-531cb899437778732a2e5372268102acdbe28f51.tar.gz
box64-531cb899437778732a2e5372268102acdbe28f51.zip
Added more gtk3 wrapped functions (#731)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/include/gtkclass.h96
-rwxr-xr-xsrc/tools/gtkclass.c337
-rw-r--r--src/wrapped/generated/wrapper.c5
-rw-r--r--src/wrapped/generated/wrapper.h2
-rwxr-xr-xsrc/wrapped/wrappedgio2_private.h8
-rwxr-xr-xsrc/wrapped/wrappedgtk3.c11
-rwxr-xr-xsrc/wrapped/wrappedgtk3_private.h8
7 files changed, 456 insertions, 11 deletions
diff --git a/src/include/gtkclass.h b/src/include/gtkclass.h
index a87408d6..23822088 100755
--- a/src/include/gtkclass.h
+++ b/src/include/gtkclass.h
@@ -55,6 +55,12 @@ typedef struct my_GInitiallyUnownedClass_s
   void*  pdummy[6];
 } my_GInitiallyUnownedClass_t;
 
+typedef struct my_GamesScoresImporterClass_s
+{
+    my_GObjectClass_t parent_class;
+    void (*importOldScores) (void *self, void* context, void* new_scores_dir, void *error);
+}my_GamesScoresImporterClass_t;
+
 typedef struct my_GApplicationClass_s
 {
     void* construct_properties;
@@ -312,6 +318,7 @@ typedef struct my_GtkActionClass_s
   void     (* connect_proxy)      (void* action, void* proxy);
   void     (* disconnect_proxy)   (void* action, void* proxy);
   void*    (* create_menu)        (void* action);
+  void (*_gtk_reserved1) (void);
   void (*_gtk_reserved2) (void);
   void (*_gtk_reserved3) (void);
   void (*_gtk_reserved4) (void);
@@ -322,6 +329,21 @@ typedef struct my_GtkMisc2Class_s
   my_GtkWidget2Class_t parent_class;
 } my_GtkMisc2Class_t;
 
+typedef struct my_GtkMisc3Class_s
+{
+  my_GtkWidget3Class_t parent_class;
+  void (*_gtk_reserved1) (void);
+  void (*_gtk_reserved2) (void);
+  void (*_gtk_reserved3) (void);
+  void (*_gtk_reserved4) (void);
+} my_GtkMisc3Class_t;
+
+typedef struct my_GtkMenuButtonClass_s
+{
+  my_GtkWidget3Class_t parent_class;
+  void (* activate) (void *self);
+}my_GtkMenuButtonClass_t;
+
 typedef struct my_GtkLabel2Class_s
 {
   my_GtkMisc2Class_t parent_class;
@@ -334,6 +356,23 @@ typedef struct my_GtkLabel2Class_s
   void (*_gtk_reserved3) (void);
 } my_GtkLabel2Class_t;
 
+typedef struct my_GtkLabel3Class_s
+{
+  my_GtkMisc3Class_t parent_class;
+  void (* move_cursor)     (void* label, int step, int count, int extend_selection);
+  void (* copy_clipboard)  (void* label);
+  void (* populate_popup)  (void* label, void* menu);
+  int  (*activate_link)    (void* label, void* uri);
+  void (*_gtk_reserved1) (void);
+  void (*_gtk_reserved2) (void);
+  void (*_gtk_reserved3) (void);
+  void (*_gtk_reserved4) (void);
+  void (*_gtk_reserved5) (void);
+  void (*_gtk_reserved6) (void);
+  void (*_gtk_reserved7) (void);
+  void (*_gtk_reserved8) (void);
+} my_GtkLabel3Class_t;
+
 typedef struct my_GtkTreeView2Class_s
 {
   my_GtkContainer2Class_t parent_class;
@@ -447,6 +486,20 @@ typedef struct my_GtkButton2Class_s {
   void (*_gtk_reserved4) (void);
 } my_GtkButton2Class_t;
 
+typedef struct my_GtkButton3Class_s {
+  my_GtkBin3Class_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_GtkButton3Class_t;
+
 typedef struct my_GtkToggleButton2Class_s {
   my_GtkButton2Class_t parent_class;
   void (* toggled) (void* toggle_button);
@@ -608,6 +661,41 @@ typedef struct my_GtkGrid3Class_s {
   void (* _gtk_reserved8) (void);
 }my_GtkGrid3Class_t;
 
+typedef struct my_GtkEventControllerClass_s {
+  my_GObjectClass_t parent_class;
+  void (* set_widget)   (void *controller, void *widget);
+  void (* unset_widget) (void *controller);
+  int (* handle_event) (void *controller, void *event, double x, double y);
+  void (* reset) (void *controller);
+  void (* handle_crossing) (void *controller, void *crossing, double x, double y);
+  int (* filter_event) (void *controller, void *event);
+  void* padding[10];
+}my_GtkEventControllerClass_t;
+
+typedef struct my_GtkGestureClass_s {
+  my_GtkEventControllerClass_t parent_class;
+  int (* check)  (void *gesture);
+  void (* begin)  (void *gesture, void *sequence);
+  void (* update) (void *gesture, void *sequence);
+  void (* end) (void *gesture, void *sequence);
+  void (* cancel) (void *gesture, void *sequence);
+  void (* sequence_state_changed) (void *gesture, void *sequence, int state);
+  void* padding[10];
+}my_GtkGestureClass_t;
+
+typedef struct my_GtkGestureSingleClass_s {
+  my_GtkGestureClass_t parent_class;
+  void* padding[10];
+}my_GtkGestureSingleClass_t;
+
+typedef struct my_GtkGestureLongPressClass_s {
+  my_GtkGestureSingleClass_t parent_class;
+  void (* pressed) (void *gesture, double x, double y);
+  void (* cancelled) (void *gesture);
+  /*< private >*/
+  void* padding[10];
+}my_GtkGestureLongPressClass_t;
+
 typedef struct my_MetaFrames2Class_s
 {
   my_GtkWindow2Class_t parent_class;
@@ -748,6 +836,7 @@ void FiniGTKClass();
 #define GTKCLASSES()                \
 GTKCLASS(GObject)                   \
 GTKCLASS(GInitiallyUnowned)         \
+GTKCLASS(GamesScoresImporter)       \
 GTKCLASS(GApplication)              \
 GTKCLASS(GtkApplication)            \
 GTKCLASS(GtkObject)                 \
@@ -757,7 +846,9 @@ GTKCLASS(GtkContainer2)             \
 GTKCLASS(GtkContainer3)             \
 GTKCLASS(GtkAction)                 \
 GTKCLASS(GtkLabel2)                 \
+GTKCLASS(GtkLabel3)                 \
 GTKCLASS(GtkMisc2)                  \
+GTKCLASS(GtkMisc3)                  \
 GTKCLASS(GtkTreeView2)              \
 GTKCLASS(GtkBin2)                   \
 GTKCLASS(GtkBin3)                   \
@@ -769,6 +860,7 @@ GTKCLASS(GtkApplicationWindow)      \
 GTKCLASS(GtkListBox)                \
 GTKCLASS(GtkListBoxRow)             \
 GTKCLASS(GtkButton2)                \
+GTKCLASS(GtkButton3)                \
 GTKCLASS(GtkComboBox2)              \
 GTKCLASS(GtkToggleButton2)          \
 GTKCLASS(GtkCheckButton2)           \
@@ -782,6 +874,10 @@ GTKCLASS(GtkMenuBar2)               \
 GTKCLASS(GtkTextView2)              \
 GTKCLASS(GtkTextView3)              \
 GTKCLASS(GtkGrid3)                  \
+GTKCLASS(GtkEventController)        \
+GTKCLASS(GtkGesture)                \
+GTKCLASS(GtkGestureSingle)          \
+GTKCLASS(GtkGestureLongPress)       \
 GTKCLASS(MetaFrames2)               \
 GTKCLASS(GDBusObjectManagerClient)  \
 GTKCLASS(AtkObject)                 \
diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c
index ee22a59c..22474a2f 100755
--- a/src/tools/gtkclass.c
+++ b/src/tools/gtkclass.c
@@ -221,6 +221,39 @@ static void bridgeGInitiallyUnownedClass(my_GInitiallyUnownedClass_t* class)
 }
 #undef SUPERGO
 
+// ----- GamesScoresImporterClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GamesScoresImporter, importOldScores, void, (void *self, void* context, void* new_scores_dir, void *error), 4, self, context, new_scores_dir, error);
+
+#define SUPERGO() \
+    GO(importOldScores, vFpppp);
+
+// wrap (so bridge all calls, just in case)
+static void wrapGamesScoresImporterClass(my_GamesScoresImporterClass_t* class)
+{
+    wrapGObjectClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GamesScoresImporter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGamesScoresImporterClass(my_GamesScoresImporterClass_t* class)
+{
+    unwrapGObjectClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GamesScoresImporter (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGamesScoresImporterClass(my_GamesScoresImporterClass_t* class)
+{
+    bridgeGObjectClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GamesScoresImporter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+
 // ----- GApplicationClass ------
 // wrapper x86 -> natives of callbacks
 WRAPPER(GApplication, startup, void, (void* application), 1, application);
@@ -876,13 +909,77 @@ static void bridgeGtkMisc2Class(my_GtkMisc2Class_t* class)
     bridgeGtkWidget2Class(&class->parent_class);
 }
 
+// ----- GtkMisc3Class ------
+// no wrapper x86 -> natives of callbacks
+
+#define SUPERGO()           \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGtkMisc3Class(my_GtkMisc3Class_t* class)
+{
+    wrapGtkWidget3Class(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GtkMisc3 (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGtkMisc3Class(my_GtkMisc3Class_t* class)
+{
+    unwrapGtkWidget3Class(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GtkMisc3 (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGtkMisc3Class(my_GtkMisc3Class_t* class)
+{
+    bridgeGtkWidget3Class(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GtkMisc3 (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
+// ----- GtkGtkMenuButtonClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GtkMenuButton, activate, void, (void* self), 1, self);
+
+#define SUPERGO() \
+    GO(activate, vFp);
+
+// wrap (so bridge all calls, just in case)
+static void wrapGtkMenuButtonClass(my_GtkMenuButtonClass_t* class)
+{
+    wrapGtkWidget3Class(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GtkMenuButton (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGtkMenuButtonClass(my_GtkMenuButtonClass_t* class)
+{
+    unwrapGtkWidget3Class(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GtkMenuButton (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGtkMenuButtonClass(my_GtkMenuButtonClass_t* class)
+{
+    bridgeGtkWidget3Class(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GtkMenuButton (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
 
 // ----- GtkLabel2Class ------
 // wrapper x86 -> natives of callbacks
-WRAPPER(GtkMisc2, move_cursor, void, (void* label, int step, int count, int extend_selection), 4, label, step, count, extend_selection);
-WRAPPER(GtkMisc2, copy_clipboard, void, (void* label), 1, label);
-WRAPPER(GtkMisc2, populate_popup, void, (void* label, void* menu), 2, label, menu);
-WRAPPER(GtkMisc2, activate_link, int, (void* label, void* uri), 2, label, uri);
+WRAPPER(GtkLabel2, move_cursor, void, (void* label, int step, int count, int extend_selection), 4, label, step, count, extend_selection);
+WRAPPER(GtkLabel2, copy_clipboard, void, (void* label), 1, label);
+WRAPPER(GtkLabel2, populate_popup, void, (void* label, void* menu), 2, label, menu);
+WRAPPER(GtkLabel2, activate_link, int, (void* label, void* uri), 2, label, uri);
 
 #define SUPERGO() \
     GO(move_cursor, vFpiii);    \
@@ -894,7 +991,7 @@ WRAPPER(GtkMisc2, activate_link, int, (void* label, void* uri), 2, label, uri);
 static void wrapGtkLabel2Class(my_GtkLabel2Class_t* class)
 {
     wrapGtkMisc2Class(&class->parent_class);
-    #define GO(A, W) class->A = reverse_##A##_GtkMisc2 (W, class->A)
+    #define GO(A, W) class->A = reverse_##A##_GtkLabel2 (W, class->A)
     SUPERGO()
     #undef GO
 }
@@ -902,7 +999,7 @@ static void wrapGtkLabel2Class(my_GtkLabel2Class_t* class)
 static void unwrapGtkLabel2Class(my_GtkLabel2Class_t* class)
 {   
     unwrapGtkMisc2Class(&class->parent_class);
-    #define GO(A, W)   class->A = find_##A##_GtkMisc2 (class->A)
+    #define GO(A, W)   class->A = find_##A##_GtkLabel2 (class->A)
     SUPERGO()
     #undef GO
 }
@@ -910,12 +1007,52 @@ static void unwrapGtkLabel2Class(my_GtkLabel2Class_t* class)
 static void bridgeGtkLabel2Class(my_GtkLabel2Class_t* class)
 {
     bridgeGtkMisc2Class(&class->parent_class);
-    #define GO(A, W) autobridge_##A##_GtkMisc2 (W, class->A)
+    #define GO(A, W) autobridge_##A##_GtkLabel2 (W, class->A)
     SUPERGO()
     #undef GO
 }
 #undef SUPERGO
 
+// ----- GtkLabel3Class ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GtkLabel3, move_cursor, void, (void* label, int step, int count, int extend_selection), 4, label, step, count, extend_selection);
+WRAPPER(GtkLabel3, copy_clipboard, void, (void* label), 1, label);
+WRAPPER(GtkLabel3, populate_popup, void, (void* label, void* menu), 2, label, menu);
+WRAPPER(GtkLabel3, activate_link, int, (void* label, void* uri), 2, label, uri);
+
+#define SUPERGO() \
+    GO(move_cursor, vFpiii);    \
+    GO(copy_clipboard, vFp);    \
+    GO(populate_popup, vFpp);   \
+    GO(activate_link, iFpp);    \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGtkLabel3Class(my_GtkLabel3Class_t* class)
+{
+    wrapGtkMisc3Class(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GtkLabel3 (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGtkLabel3Class(my_GtkLabel3Class_t* class)
+{
+    unwrapGtkMisc3Class(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GtkLabel3 (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGtkLabel3Class(my_GtkLabel3Class_t* class)
+{
+    bridgeGtkMisc3Class(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GtkLabel3 (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
 // ----- GtkTreeView2Class ------
 // wrapper x86 -> natives of callbacks
 WRAPPER(GtkTreeView2, set_scroll_adjustments, void, (void* tree_view, void* hadjustment, void* vadjustment), 3, tree_view, hadjustment, vadjustment);
@@ -1336,6 +1473,51 @@ static void bridgeGtkButton2Class(my_GtkButton2Class_t* class)
 
 #undef SUPERGO
 
+// ----- GtkButton3Class ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GtkButton3, pressed, void,  (void* button), 1, button);
+WRAPPER(GtkButton3, released, void, (void* button), 1, button);
+WRAPPER(GtkButton3, clicked, void,  (void* button), 1, button);
+WRAPPER(GtkButton3, enter, void,    (void* button), 1, button);
+WRAPPER(GtkButton3, leave, void,    (void* button), 1, button);
+WRAPPER(GtkButton3, 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 wrapGtkButton3Class(my_GtkButton3Class_t* class)
+{
+    wrapGtkBin3Class(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GtkButton3 (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGtkButton3Class(my_GtkButton3Class_t* class)
+{
+    unwrapGtkBin3Class(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GtkButton3 (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGtkButton3Class(my_GtkButton3Class_t* class)
+{
+    bridgeGtkBin3Class(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GtkButton3 (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
 // ----- GtkComboBox2Class ------
 // wrapper x86 -> natives of callbacks
 WRAPPER(GtkComboBox2, changed, void, (void* combo_box), 1, combo_box);
@@ -1875,6 +2057,147 @@ static void bridgeGtkGrid3Class(my_GtkGrid3Class_t* class)
 
 #undef SUPERGO
 
+// ----- GtkEventControllerClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GtkEventController, set_widget, void, (void* controller, void* widget), 2, controller, widget);
+WRAPPER(GtkEventController, unset_widget, void, (void* controller), 1, controller);
+WRAPPER(GtkEventController, handle_event, int, (void *controller, void *event, double x, double y), 4, controller, event, x, y);
+WRAPPER(GtkEventController, reset, void, (void* controller), 1, controller);
+WRAPPER(GtkEventController, handle_crossing, void, (void *controller, void *crossing, double x, double y), 4, controller, crossing, x, y);
+WRAPPER(GtkEventController, filter_event, void, (void *controller, void *event), 2, controller, event);
+
+#define SUPERGO()               \
+    GO(set_widget, vFpp);       \
+    GO(unset_widget, vFp);      \
+    GO(handle_event, iFppdd);   \
+    GO(reset, vFp);             \
+    GO(handle_crossing, vFppdd);\
+    GO(filter_event, vFpp);
+
+// wrap (so bridge all calls, just in case)
+static void wrapGtkEventControllerClass(my_GtkEventControllerClass_t* class)
+{
+    wrapGObjectClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GtkEventController(W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGtkEventControllerClass(my_GtkEventControllerClass_t* class)
+{
+    unwrapGObjectClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GtkEventController (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGtkEventControllerClass(my_GtkEventControllerClass_t* class)
+{
+    bridgeGObjectClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GtkEventController (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
+// ----- GtkGestureClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GtkGesture, check, void, (void* gesture), 1, gesture);
+WRAPPER(GtkGesture, begin, void, (void *gesture, void *sequence), 2, gesture, sequence);
+WRAPPER(GtkGesture, update, void, (void *gesture, void *sequence), 2, gesture, sequence);
+WRAPPER(GtkGesture, end, void, (void *gesture, void *sequence), 2, gesture, sequence);
+WRAPPER(GtkGesture, cancel, void, (void *gesture, void *sequence), 2, gesture, sequence);
+WRAPPER(GtkGesture, sequence_state_changed, void, (void *gesture, void *sequence, int state), 3, gesture, sequence, state);
+
+#define SUPERGO()              \
+    GO(check, vFp);            \
+    GO(begin, vFpp);           \
+    GO(update, vFpp);          \
+    GO(end, vFpp);             \
+    GO(cancel, vFpp);          \
+    GO(sequence_state_changed, vFppi);
+
+// wrap (so bridge all calls, just in case)
+static void wrapGtkGestureClass(my_GtkGestureClass_t* class)
+{
+    wrapGtkEventControllerClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GtkGesture(W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGtkGestureClass(my_GtkGestureClass_t* class)
+{
+    unwrapGtkEventControllerClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GtkGesture (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGtkGestureClass(my_GtkGestureClass_t* class)
+{
+    bridgeGtkEventControllerClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GtkGesture (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
+// ----- GtkGestureSingleClass ------
+// wrap (so bridge all calls, just in case)
+static void wrapGtkGestureSingleClass(my_GtkGestureSingleClass_t* class)
+{
+    wrapGtkGestureClass(&class->parent_class);
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGtkGestureSingleClass(my_GtkGestureSingleClass_t* class)
+{
+    unwrapGtkGestureClass(&class->parent_class);
+}
+// autobridge
+static void bridgeGtkGestureSingleClass(my_GtkGestureSingleClass_t* class)
+{
+    bridgeGtkGestureClass(&class->parent_class);
+}
+
+// ----- GtkGestureClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GtkGestureLongPress, pressed, void, (void *gesture, double x, double y), 3, gesture, x, y);
+WRAPPER(GtkGestureLongPress, cancelled, void, (void *cancelled), 1, cancelled);
+
+#define SUPERGO()              \
+    GO(pressed, vFpdd);          \
+    GO(cancelled, vFp);
+
+// wrap (so bridge all calls, just in case)
+static void wrapGtkGestureLongPressClass(my_GtkGestureLongPressClass_t* class)
+{
+    wrapGtkGestureSingleClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GtkGestureLongPress(W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGtkGestureLongPressClass(my_GtkGestureLongPressClass_t* class)
+{
+    unwrapGtkGestureSingleClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GtkGestureLongPress (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGtkGestureLongPressClass(my_GtkGestureLongPressClass_t* class)
+{
+    bridgeGtkGestureSingleClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GtkGestureLongPress (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
 // ----- AtkObjectClass ------
 // wrapper x86 -> natives of callbacks
 WRAPPER(AtkObject, get_name, void*, (void* accessible), 1, accessible);
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 15dd58cc..1a7ebf84 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -914,6 +914,7 @@ typedef int32_t (*iFppuw_t)(void*, void*, uint32_t, int16_t);
 typedef int32_t (*iFppui_t)(void*, void*, uint32_t, int32_t);
 typedef int32_t (*iFppuu_t)(void*, void*, uint32_t, uint32_t);
 typedef int32_t (*iFppup_t)(void*, void*, uint32_t, void*);
+typedef int32_t (*iFppdd_t)(void*, void*, double, double);
 typedef int32_t (*iFppdp_t)(void*, void*, double, void*);
 typedef int32_t (*iFppll_t)(void*, void*, intptr_t, intptr_t);
 typedef int32_t (*iFpplp_t)(void*, void*, intptr_t, void*);
@@ -1979,6 +1980,7 @@ typedef void* (*pFpppdddi_t)(void*, void*, void*, double, double, double, int32_
 typedef void* (*pFpppllli_t)(void*, void*, void*, intptr_t, intptr_t, intptr_t, int32_t);
 typedef void* (*pFpppLLLi_t)(void*, void*, void*, uintptr_t, uintptr_t, uintptr_t, int32_t);
 typedef void* (*pFppppuuu_t)(void*, void*, void*, void*, uint32_t, uint32_t, uint32_t);
+typedef void* (*pFpppppip_t)(void*, void*, void*, void*, void*, int32_t, void*);
 typedef void* (*pFpppppuu_t)(void*, void*, void*, void*, void*, uint32_t, uint32_t);
 typedef void* (*pFppppppi_t)(void*, void*, void*, void*, void*, void*, int32_t);
 typedef void* (*pFppppppp_t)(void*, void*, void*, void*, void*, void*, void*);
@@ -3319,6 +3321,7 @@ void iFppuw(x64emu_t *emu, uintptr_t fcn) { iFppuw_t fn = (iFppuw_t)fcn; R_RAX=(
 void iFppui(x64emu_t *emu, uintptr_t fcn) { iFppui_t fn = (iFppui_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX); }
 void iFppuu(x64emu_t *emu, uintptr_t fcn) { iFppuu_t fn = (iFppuu_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
 void iFppup(x64emu_t *emu, uintptr_t fcn) { iFppup_t fn = (iFppup_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
+void iFppdd(x64emu_t *emu, uintptr_t fcn) { iFppdd_t fn = (iFppdd_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0], emu->xmm[0].d[1]); }
 void iFppdp(x64emu_t *emu, uintptr_t fcn) { iFppdp_t fn = (iFppdp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0], (void*)R_RDX); }
 void iFppll(x64emu_t *emu, uintptr_t fcn) { iFppll_t fn = (iFppll_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX); }
 void iFpplp(x64emu_t *emu, uintptr_t fcn) { iFpplp_t fn = (iFpplp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (void*)R_RCX); }
@@ -4384,6 +4387,7 @@ void pFpppdddi(x64emu_t *emu, uintptr_t fcn) { pFpppdddi_t fn = (pFpppdddi_t)fcn
 void pFpppllli(x64emu_t *emu, uintptr_t fcn) { pFpppllli_t fn = (pFpppllli_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (intptr_t)R_RCX, (intptr_t)R_R8, (intptr_t)R_R9, *(int32_t*)(R_RSP + 8)); }
 void pFpppLLLi(x64emu_t *emu, uintptr_t fcn) { pFpppLLLi_t fn = (pFpppLLLi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (uintptr_t)R_R9, *(int32_t*)(R_RSP + 8)); }
 void pFppppuuu(x64emu_t *emu, uintptr_t fcn) { pFppppuuu_t fn = (pFppppuuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
+void pFpppppip(x64emu_t *emu, uintptr_t fcn) { pFpppppip_t fn = (pFpppppip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFpppppuu(x64emu_t *emu, uintptr_t fcn) { pFpppppuu_t fn = (pFpppppuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
 void pFppppppi(x64emu_t *emu, uintptr_t fcn) { pFppppppi_t fn = (pFppppppi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8)); }
 void pFppppppp(x64emu_t *emu, uintptr_t fcn) { pFppppppp_t fn = (pFppppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
@@ -5581,6 +5585,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &iFppui) return 1;
 	if (fun == &iFppuu) return 1;
 	if (fun == &iFppup) return 1;
+	if (fun == &iFppdd) return 2;
 	if (fun == &iFppdp) return 2;
 	if (fun == &iFppll) return 1;
 	if (fun == &iFpplp) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 670497fb..523daf87 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -915,6 +915,7 @@ void iFppuw(x64emu_t *emu, uintptr_t fnc);
 void iFppui(x64emu_t *emu, uintptr_t fnc);
 void iFppuu(x64emu_t *emu, uintptr_t fnc);
 void iFppup(x64emu_t *emu, uintptr_t fnc);
+void iFppdd(x64emu_t *emu, uintptr_t fnc);
 void iFppdp(x64emu_t *emu, uintptr_t fnc);
 void iFppll(x64emu_t *emu, uintptr_t fnc);
 void iFpplp(x64emu_t *emu, uintptr_t fnc);
@@ -1980,6 +1981,7 @@ void pFpppdddi(x64emu_t *emu, uintptr_t fnc);
 void pFpppllli(x64emu_t *emu, uintptr_t fnc);
 void pFpppLLLi(x64emu_t *emu, uintptr_t fnc);
 void pFppppuuu(x64emu_t *emu, uintptr_t fnc);
+void pFpppppip(x64emu_t *emu, uintptr_t fnc);
 void pFpppppuu(x64emu_t *emu, uintptr_t fnc);
 void pFppppppi(x64emu_t *emu, uintptr_t fnc);
 void pFppppppp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedgio2_private.h b/src/wrapped/wrappedgio2_private.h
index 46a8ca7a..38010825 100755
--- a/src/wrapped/wrappedgio2_private.h
+++ b/src/wrapped/wrappedgio2_private.h
@@ -28,7 +28,7 @@ GO(g_action_group_has_action, iFpp)
 GO(g_action_group_list_actions, pFp)
 GO(g_action_group_query_action, iFppppppp)
 GO(g_action_map_add_action, vFpp)
-//GO(g_action_map_add_action_entries, 
+GO(g_action_map_add_action_entries, vFppip)
 //GO(g_action_map_get_type, 
 GO(g_action_map_lookup_action, pFpp)
 //GO(g_action_map_remove_action, 
@@ -1023,7 +1023,7 @@ GO(g_list_model_get_object, pFpu)
 //GO(g_memory_output_stream_get_size, 
 //GO(g_memory_output_stream_get_type, 
 //GO(g_memory_output_stream_new, 
-//GO(g_memory_output_stream_new_resizable, 
+GO(g_memory_output_stream_new_resizable, pFv)
 //GO(g_memory_output_stream_steal_as_bytes, 
 //GO(g_memory_output_stream_steal_data, 
 //GO(g_memory_settings_backend_new, 
@@ -1321,7 +1321,7 @@ GO(g_settings_get_int, iFpp)
 //GO(g_settings_get_range, 
 GO(g_settings_get_string, pFpp)
 GO(g_settings_get_strv, pFpp)
-//GO(g_settings_get_type, 
+GO(g_settings_get_type, pFv)
 //GO(g_settings_get_uint, 
 GO(g_settings_get_user_value, pFpp)
 GO(g_settings_get_value, pFpp)
@@ -1367,7 +1367,7 @@ GO(g_settings_set_boolean, iFppi)
 //GO(g_settings_set_enum, 
 //GO(g_settings_set_flags, 
 GO(g_settings_set_int, iFppi)
-//GO(g_settings_set_string, 
+GO(g_settings_set_string, iFppp)
 //GO(g_settings_set_strv, 
 //GO(g_settings_set_uint, 
 GO(g_settings_set_value, iFppp)
diff --git a/src/wrapped/wrappedgtk3.c b/src/wrapped/wrappedgtk3.c
index 64ced1ac..b2e459d1 100755
--- a/src/wrapped/wrappedgtk3.c
+++ b/src/wrapped/wrappedgtk3.c
@@ -65,6 +65,10 @@ GO(gtk_menu_bar_get_type, LFv_t)            \
 GO(gtk_action_get_type, LFv_t)              \
 GO(gtk_application_get_type, LFv_t)         \
 GO(gtk_grid_get_type, LFv_t)                \
+GO(gtk_event_controller_get_type, LFv_t)    \
+GO(gtk_gesture_get_type, LFv_t)             \
+GO(gtk_gesture_single_get_type, LFv_t)      \
+GO(gtk_gesture_long_press_get_type, LFv_t)  \
 GO(gtk_dialog_add_button, pFppi_t)          \
 GO(gtk_spin_button_get_value, dFp_t)        \
 GO(gtk_builder_lookup_callback_symbol, pFpp_t)  \
@@ -731,12 +735,19 @@ EXPORT void my3_gtk_container_foreach(x64emu_t* emu, void* container, void* cb,
     SetGtkWidget3ID(my->gtk_widget_get_type());                 \
     SetGtkContainer3ID(my->gtk_container_get_type());           \
     SetGtkBin3ID(my->gtk_bin_get_type());                       \
+    SetGtkButton3ID(my->gtk_button_get_type());                 \
     SetGtkWindow3ID(my->gtk_window_get_type());                 \
     SetGtkApplicationWindowID(my->gtk_application_window_get_type());\
     SetGtkListBoxID(my->gtk_list_box_get_type());               \
     SetGtkListBoxRowID(my->gtk_list_box_row_get_type());        \
     SetGtkTextView3ID(my->gtk_text_view_get_type());            \
     SetGtkGrid3ID(my->gtk_grid_get_type());                     \
+    SetGtkMisc3ID(my->gtk_misc_get_type());                     \
+    SetGtkLabel3ID(my->gtk_label_get_type());                   \
+    SetGtkEventControllerID(my->gtk_event_controller_get_type());\
+    SetGtkGestureID(my->gtk_gesture_get_type());                \
+    SetGtkGestureSingleID(my->gtk_gesture_single_get_type());   \
+    SetGtkGestureLongPressID(my->gtk_gesture_long_press_get_type());\
     SetGtkActionID(my->gtk_action_get_type());                  \
     setNeededLibs(lib, 3, "libgdk-3.so.0", "libpangocairo-1.0.so.0", "libgio-2.0.so.0");
 
diff --git a/src/wrapped/wrappedgtk3_private.h b/src/wrapped/wrappedgtk3_private.h
index 2b0269ab..b9cf5707 100755
--- a/src/wrapped/wrappedgtk3_private.h
+++ b/src/wrapped/wrappedgtk3_private.h
@@ -1192,6 +1192,7 @@ GO(gtk_gamma_curve_get_type, pFv)
 GO(gtk_gamma_curve_new, pFv)
 GO(gtk_gc_get, pFippu)
 GO(gtk_gc_release, vFp)
+GO(gtk_gesture_long_press_new, pFv)
 GO(gtk_get_current_event, pFv)
 GO(gtk_get_current_event_state, iFp)
 GO(gtk_get_current_event_time, uFv)
@@ -1206,6 +1207,7 @@ GO(gtk_get_option_group, pFi)
 GO(gtk_grab_add, vFp)
 GO(gtk_grab_get_current, pFv)
 GO(gtk_grab_remove, vFp)
+GO(gtk_grid_attach, vFppiiii)
 GO(gtk_grid_get_type, pFv)
 GO(gtk_grid_set_column_homogeneous, vFpi)
 GO(gtk_grid_set_column_spacing, vFpu)
@@ -4197,3 +4199,9 @@ GO(gtk_window_unfullscreen, vFp)
 GO(gtk_window_unmaximize, vFp)
 GO(gtk_window_unstick, vFp)
 GO(gtk_wrap_mode_get_type, pFv)
+GO(gtk_gesture_long_press_get_type, LFv)
+GO(gtk_gesture_single_get_type, LFv)
+GO(gtk_gesture_get_type, LFv)
+GO(gtk_event_controller_get_type, LFv)
+GO(gtk_stack_set_visible_child_name, vFpp)
+GO(gtk_stack_get_visible_child_name, pFp)