Skip to content

Commit 0febc79

Browse files
laeubiakurtakov
authored andcommitted
Make new GTK4 Dialog dynamic loaded for pre GTK 4.10
1 parent e329edc commit 0febc79

File tree

3 files changed

+177
-30
lines changed

3 files changed

+177
-30
lines changed

bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c

Lines changed: 143 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,15 @@ JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1dialog_1get_1default_1filter)
662662
{
663663
jlong rc = 0;
664664
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1get_1default_1filter_FUNC);
665-
rc = (jlong)gtk_file_dialog_get_default_filter((GtkFileDialog *)arg0);
665+
/*
666+
rc = (jlong)gtk_file_dialog_get_default_filter(arg0);
667+
*/
668+
{
669+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_get_default_filter)
670+
if (fp) {
671+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong))fp)(arg0);
672+
}
673+
}
666674
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1get_1default_1filter_FUNC);
667675
return rc;
668676
}
@@ -674,7 +682,15 @@ JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1dialog_1new)
674682
{
675683
jlong rc = 0;
676684
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1new_FUNC);
685+
/*
677686
rc = (jlong)gtk_file_dialog_new();
687+
*/
688+
{
689+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_new)
690+
if (fp) {
691+
rc = (jlong)((jlong (CALLING_CONVENTION*)())fp)();
692+
}
693+
}
678694
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1new_FUNC);
679695
return rc;
680696
}
@@ -685,7 +701,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1open)
685701
(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2, jlong arg3, jlong arg4)
686702
{
687703
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1open_FUNC);
688-
gtk_file_dialog_open((GtkFileDialog *)arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
704+
/*
705+
gtk_file_dialog_open(arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
706+
*/
707+
{
708+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_open)
709+
if (fp) {
710+
((void (CALLING_CONVENTION*)(jlong, GtkWindow *, GCancellable *, GAsyncReadyCallback, gpointer))fp)(arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
711+
}
712+
}
689713
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1open_FUNC);
690714
}
691715
#endif
@@ -698,7 +722,15 @@ JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1dialog_1open_1finish)
698722
jlong rc = 0;
699723
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1open_1finish_FUNC);
700724
if (arg2) if ((lparg2 = (*env)->GetLongArrayElements(env, arg2, NULL)) == NULL) goto fail;
701-
rc = (jlong)gtk_file_dialog_open_finish((GtkFileDialog *)arg0, (GAsyncResult *)arg1, (GError **)lparg2);
725+
/*
726+
rc = (jlong)gtk_file_dialog_open_finish(arg0, (GAsyncResult *)arg1, (GError **)lparg2);
727+
*/
728+
{
729+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_open_finish)
730+
if (fp) {
731+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong, GAsyncResult *, GError **))fp)(arg0, (GAsyncResult *)arg1, (GError **)lparg2);
732+
}
733+
}
702734
fail:
703735
if (arg2 && lparg2) (*env)->ReleaseLongArrayElements(env, arg2, lparg2, 0);
704736
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1open_1finish_FUNC);
@@ -711,7 +743,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1open_1multiple)
711743
(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2, jlong arg3, jlong arg4)
712744
{
713745
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1open_1multiple_FUNC);
714-
gtk_file_dialog_open_multiple((GtkFileDialog *)arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
746+
/*
747+
gtk_file_dialog_open_multiple(arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
748+
*/
749+
{
750+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_open_multiple)
751+
if (fp) {
752+
((void (CALLING_CONVENTION*)(jlong, GtkWindow *, GCancellable *, GAsyncReadyCallback, gpointer))fp)(arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
753+
}
754+
}
715755
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1open_1multiple_FUNC);
716756
}
717757
#endif
@@ -724,7 +764,15 @@ JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1dialog_1open_1multiple_1finish)
724764
jlong rc = 0;
725765
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1open_1multiple_1finish_FUNC);
726766
if (arg2) if ((lparg2 = (*env)->GetLongArrayElements(env, arg2, NULL)) == NULL) goto fail;
727-
rc = (jlong)gtk_file_dialog_open_multiple_finish((GtkFileDialog *)arg0, (GAsyncResult *)arg1, (GError **)lparg2);
767+
/*
768+
rc = (jlong)gtk_file_dialog_open_multiple_finish(arg0, (GAsyncResult *)arg1, (GError **)lparg2);
769+
*/
770+
{
771+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_open_multiple_finish)
772+
if (fp) {
773+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong, GAsyncResult *, GError **))fp)(arg0, (GAsyncResult *)arg1, (GError **)lparg2);
774+
}
775+
}
728776
fail:
729777
if (arg2 && lparg2) (*env)->ReleaseLongArrayElements(env, arg2, lparg2, 0);
730778
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1open_1multiple_1finish_FUNC);
@@ -737,7 +785,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1save)
737785
(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2, jlong arg3, jlong arg4)
738786
{
739787
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1save_FUNC);
740-
gtk_file_dialog_save((GtkFileDialog *)arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
788+
/*
789+
gtk_file_dialog_save(arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
790+
*/
791+
{
792+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_save)
793+
if (fp) {
794+
((void (CALLING_CONVENTION*)(jlong, GtkWindow *, GCancellable *, GAsyncReadyCallback, gpointer))fp)(arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
795+
}
796+
}
741797
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1save_FUNC);
742798
}
743799
#endif
@@ -750,7 +806,15 @@ JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1dialog_1save_1finish)
750806
jlong rc = 0;
751807
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1save_1finish_FUNC);
752808
if (arg2) if ((lparg2 = (*env)->GetLongArrayElements(env, arg2, NULL)) == NULL) goto fail;
753-
rc = (jlong)gtk_file_dialog_save_finish((GtkFileDialog *)arg0, (GAsyncResult *)arg1, (GError **)lparg2);
809+
/*
810+
rc = (jlong)gtk_file_dialog_save_finish(arg0, (GAsyncResult *)arg1, (GError **)lparg2);
811+
*/
812+
{
813+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_save_finish)
814+
if (fp) {
815+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong, GAsyncResult *, GError **))fp)(arg0, (GAsyncResult *)arg1, (GError **)lparg2);
816+
}
817+
}
754818
fail:
755819
if (arg2 && lparg2) (*env)->ReleaseLongArrayElements(env, arg2, lparg2, 0);
756820
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1save_1finish_FUNC);
@@ -763,7 +827,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1select_1folder)
763827
(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2, jlong arg3, jlong arg4)
764828
{
765829
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1select_1folder_FUNC);
766-
gtk_file_dialog_select_folder((GtkFileDialog *)arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
830+
/*
831+
gtk_file_dialog_select_folder(arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
832+
*/
833+
{
834+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_select_folder)
835+
if (fp) {
836+
((void (CALLING_CONVENTION*)(jlong, GtkWindow *, GCancellable *, GAsyncReadyCallback, gpointer))fp)(arg0, (GtkWindow *)arg1, (GCancellable *)arg2, (GAsyncReadyCallback)arg3, (gpointer)arg4);
837+
}
838+
}
767839
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1select_1folder_FUNC);
768840
}
769841
#endif
@@ -776,7 +848,15 @@ JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1dialog_1select_1folder_1finish)
776848
jlong rc = 0;
777849
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1select_1folder_1finish_FUNC);
778850
if (arg2) if ((lparg2 = (*env)->GetLongArrayElements(env, arg2, NULL)) == NULL) goto fail;
779-
rc = (jlong)gtk_file_dialog_select_folder_finish((GtkFileDialog *)arg0, (GAsyncResult *)arg1, (GError **)lparg2);
851+
/*
852+
rc = (jlong)gtk_file_dialog_select_folder_finish(arg0, (GAsyncResult *)arg1, (GError **)lparg2);
853+
*/
854+
{
855+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_select_folder_finish)
856+
if (fp) {
857+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong, GAsyncResult *, GError **))fp)(arg0, (GAsyncResult *)arg1, (GError **)lparg2);
858+
}
859+
}
780860
fail:
781861
if (arg2 && lparg2) (*env)->ReleaseLongArrayElements(env, arg2, lparg2, 0);
782862
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1select_1folder_1finish_FUNC);
@@ -789,7 +869,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1set_1default_1filter)
789869
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
790870
{
791871
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1set_1default_1filter_FUNC);
792-
gtk_file_dialog_set_default_filter((GtkFileDialog *)arg0, (GtkFileFilter *)arg1);
872+
/*
873+
gtk_file_dialog_set_default_filter(arg0, (GtkFileFilter *)arg1);
874+
*/
875+
{
876+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_set_default_filter)
877+
if (fp) {
878+
((void (CALLING_CONVENTION*)(jlong, GtkFileFilter *))fp)(arg0, (GtkFileFilter *)arg1);
879+
}
880+
}
793881
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1set_1default_1filter_FUNC);
794882
}
795883
#endif
@@ -799,7 +887,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1set_1filters)
799887
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
800888
{
801889
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1set_1filters_FUNC);
802-
gtk_file_dialog_set_filters((GtkFileDialog *)arg0, (GListModel *)arg1);
890+
/*
891+
gtk_file_dialog_set_filters(arg0, (GListModel *)arg1);
892+
*/
893+
{
894+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_set_filters)
895+
if (fp) {
896+
((void (CALLING_CONVENTION*)(jlong, GListModel *))fp)(arg0, (GListModel *)arg1);
897+
}
898+
}
803899
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1set_1filters_FUNC);
804900
}
805901
#endif
@@ -809,7 +905,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1set_1initial_1file)
809905
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
810906
{
811907
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1set_1initial_1file_FUNC);
812-
gtk_file_dialog_set_initial_file((GtkFileDialog *)arg0, (GFile *)arg1);
908+
/*
909+
gtk_file_dialog_set_initial_file(arg0, (GFile *)arg1);
910+
*/
911+
{
912+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_set_initial_file)
913+
if (fp) {
914+
((void (CALLING_CONVENTION*)(jlong, GFile *))fp)(arg0, (GFile *)arg1);
915+
}
916+
}
813917
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1set_1initial_1file_FUNC);
814918
}
815919
#endif
@@ -819,7 +923,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1set_1initial_1folder)
819923
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
820924
{
821925
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1set_1initial_1folder_FUNC);
822-
gtk_file_dialog_set_initial_folder((GtkFileDialog *)arg0, (GFile *)arg1);
926+
/*
927+
gtk_file_dialog_set_initial_folder(arg0, (GFile *)arg1);
928+
*/
929+
{
930+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_set_initial_folder)
931+
if (fp) {
932+
((void (CALLING_CONVENTION*)(jlong, GFile *))fp)(arg0, (GFile *)arg1);
933+
}
934+
}
823935
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1set_1initial_1folder_FUNC);
824936
}
825937
#endif
@@ -831,7 +943,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1set_1initial_1name)
831943
jbyte *lparg1=NULL;
832944
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1set_1initial_1name_FUNC);
833945
if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
834-
gtk_file_dialog_set_initial_name((GtkFileDialog *)arg0, (char *)lparg1);
946+
/*
947+
gtk_file_dialog_set_initial_name(arg0, (char *)lparg1);
948+
*/
949+
{
950+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_set_initial_name)
951+
if (fp) {
952+
((void (CALLING_CONVENTION*)(jlong, char *))fp)(arg0, (char *)lparg1);
953+
}
954+
}
835955
fail:
836956
if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
837957
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1set_1initial_1name_FUNC);
@@ -845,7 +965,15 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1file_1dialog_1set_1title)
845965
jbyte *lparg1=NULL;
846966
GTK4_NATIVE_ENTER(env, that, gtk_1file_1dialog_1set_1title_FUNC);
847967
if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
848-
gtk_file_dialog_set_title((GtkFileDialog *)arg0, (char *)lparg1);
968+
/*
969+
gtk_file_dialog_set_title(arg0, (char *)lparg1);
970+
*/
971+
{
972+
GTK4_LOAD_FUNCTION(fp, gtk_file_dialog_set_title)
973+
if (fp) {
974+
((void (CALLING_CONVENTION*)(jlong, char *))fp)(arg0, (char *)lparg1);
975+
}
976+
}
849977
fail:
850978
if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
851979
GTK4_NATIVE_EXIT(env, that, gtk_1file_1dialog_1set_1title_FUNC);

bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@
2222

2323
#include <gtk/gtk.h>
2424

25+
// Hard-link code generated from GTK4.java to LIB_GTK
26+
#define GTK4_LOAD_FUNCTION(var, name) LOAD_FUNCTION_LIB(var, LIB_GTK, name)
27+
2528
#endif /* INC_gtk4_H */

0 commit comments

Comments
 (0)