Skip to content

Commit 04ceeec

Browse files
committed
[GTK4] Guard new dialog API behind a 4.10 version check
This restricts the GTK4-specific dialogs to only be executed when the system is using at least GTK 4.10. In all other cases, the (deprecated) implementation that was removed with the following commits has been restored: - FontDialog: 10567bb - FileDialog: 4179dc7 - DirectoryDialog: 2e61b4b
1 parent 4a201e2 commit 04ceeec

File tree

12 files changed

+398
-275
lines changed

12 files changed

+398
-275
lines changed

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

Lines changed: 1 addition & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2000, 2024 IBM Corporation and others.
2+
* Copyright (c) 2000, 2025 IBM Corporation and others.
33
*
44
* This program and the accompanying materials
55
* are made available under the terms of the Eclipse Public License 2.0
@@ -780,16 +780,6 @@ JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1events_1pending)
780780
}
781781
#endif
782782

783-
#ifndef NO_gtk_1file_1chooser_1add_1filter
784-
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1add_1filter)
785-
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
786-
{
787-
GTK3_NATIVE_ENTER(env, that, gtk_1file_1chooser_1add_1filter_FUNC);
788-
gtk_file_chooser_add_filter((GtkFileChooser *)arg0, (GtkFileFilter *)arg1);
789-
GTK3_NATIVE_EXIT(env, that, gtk_1file_1chooser_1add_1filter_FUNC);
790-
}
791-
#endif
792-
793783
#ifndef NO_gtk_1file_1chooser_1get_1filename
794784
JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1file_1chooser_1get_1filename)
795785
(JNIEnv *env, jclass that, jlong arg0)
@@ -814,18 +804,6 @@ JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1file_1chooser_1get_1filenames)
814804
}
815805
#endif
816806

817-
#ifndef NO_gtk_1file_1chooser_1get_1filter
818-
JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1file_1chooser_1get_1filter)
819-
(JNIEnv *env, jclass that, jlong arg0)
820-
{
821-
jlong rc = 0;
822-
GTK3_NATIVE_ENTER(env, that, gtk_1file_1chooser_1get_1filter_FUNC);
823-
rc = (jlong)gtk_file_chooser_get_filter((GtkFileChooser *)arg0);
824-
GTK3_NATIVE_EXIT(env, that, gtk_1file_1chooser_1get_1filter_FUNC);
825-
return rc;
826-
}
827-
#endif
828-
829807
#ifndef NO_gtk_1file_1chooser_1get_1uri
830808
JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1file_1chooser_1get_1uri)
831809
(JNIEnv *env, jclass that, jlong arg0)
@@ -850,36 +828,6 @@ JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1file_1chooser_1get_1uris)
850828
}
851829
#endif
852830

853-
#ifndef NO_gtk_1file_1chooser_1native_1new
854-
JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1file_1chooser_1native_1new)
855-
(JNIEnv *env, jclass that, jbyteArray arg0, jlong arg1, jint arg2, jbyteArray arg3, jbyteArray arg4)
856-
{
857-
jbyte *lparg0=NULL;
858-
jbyte *lparg3=NULL;
859-
jbyte *lparg4=NULL;
860-
jlong rc = 0;
861-
GTK3_NATIVE_ENTER(env, that, gtk_1file_1chooser_1native_1new_FUNC);
862-
if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
863-
if (arg3) if ((lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL)) == NULL) goto fail;
864-
if (arg4) if ((lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL)) == NULL) goto fail;
865-
/*
866-
rc = (jlong)gtk_file_chooser_native_new((const gchar *)lparg0, (GtkWindow *)arg1, arg2, (const gchar *)lparg3, (const gchar *)lparg4);
867-
*/
868-
{
869-
GTK3_LOAD_FUNCTION(fp, gtk_file_chooser_native_new)
870-
if (fp) {
871-
rc = (jlong)((jlong (CALLING_CONVENTION*)(const gchar *, GtkWindow *, jint, const gchar *, const gchar *))fp)((const gchar *)lparg0, (GtkWindow *)arg1, arg2, (const gchar *)lparg3, (const gchar *)lparg4);
872-
}
873-
}
874-
fail:
875-
if (arg4 && lparg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, JNI_ABORT);
876-
if (arg3 && lparg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, JNI_ABORT);
877-
if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, JNI_ABORT);
878-
GTK3_NATIVE_EXIT(env, that, gtk_1file_1chooser_1native_1new_FUNC);
879-
return rc;
880-
}
881-
#endif
882-
883831
#ifndef NO_gtk_1file_1chooser_1set_1current_1folder
884832
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1current_1folder)
885833
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -904,20 +852,6 @@ JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1current_1folder_1uri
904852
}
905853
#endif
906854

907-
#ifndef NO_gtk_1file_1chooser_1set_1current_1name
908-
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1current_1name)
909-
(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
910-
{
911-
jbyte *lparg1=NULL;
912-
GTK3_NATIVE_ENTER(env, that, gtk_1file_1chooser_1set_1current_1name_FUNC);
913-
if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
914-
gtk_file_chooser_set_current_name((GtkFileChooser *)arg0, (const gchar *)lparg1);
915-
fail:
916-
if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
917-
GTK3_NATIVE_EXIT(env, that, gtk_1file_1chooser_1set_1current_1name_FUNC);
918-
}
919-
#endif
920-
921855
#ifndef NO_gtk_1file_1chooser_1set_1do_1overwrite_1confirmation
922856
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1do_1overwrite_1confirmation)
923857
(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -948,16 +882,6 @@ JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1filename)
948882
}
949883
#endif
950884

951-
#ifndef NO_gtk_1file_1chooser_1set_1filter
952-
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1filter)
953-
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
954-
{
955-
GTK3_NATIVE_ENTER(env, that, gtk_1file_1chooser_1set_1filter_FUNC);
956-
gtk_file_chooser_set_filter((GtkFileChooser *)arg0, (GtkFileFilter *)arg1);
957-
GTK3_NATIVE_EXIT(env, that, gtk_1file_1chooser_1set_1filter_FUNC);
958-
}
959-
#endif
960-
961885
#ifndef NO_gtk_1file_1chooser_1set_1local_1only
962886
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1local_1only)
963887
(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -968,16 +892,6 @@ JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1local_1only)
968892
}
969893
#endif
970894

971-
#ifndef NO_gtk_1file_1chooser_1set_1select_1multiple
972-
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1select_1multiple)
973-
(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
974-
{
975-
GTK3_NATIVE_ENTER(env, that, gtk_1file_1chooser_1set_1select_1multiple_FUNC);
976-
gtk_file_chooser_set_select_multiple((GtkFileChooser *)arg0, (gboolean)arg1);
977-
GTK3_NATIVE_EXIT(env, that, gtk_1file_1chooser_1set_1select_1multiple_FUNC);
978-
}
979-
#endif
980-
981895
#ifndef NO_gtk_1file_1chooser_1set_1uri
982896
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1uri)
983897
(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
@@ -992,48 +906,6 @@ JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1file_1chooser_1set_1uri)
992906
}
993907
#endif
994908

995-
#ifndef NO_gtk_1font_1chooser_1dialog_1new
996-
JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1font_1chooser_1dialog_1new)
997-
(JNIEnv *env, jclass that, jbyteArray arg0, jlong arg1)
998-
{
999-
jbyte *lparg0=NULL;
1000-
jlong rc = 0;
1001-
GTK3_NATIVE_ENTER(env, that, gtk_1font_1chooser_1dialog_1new_FUNC);
1002-
if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
1003-
rc = (jlong)gtk_font_chooser_dialog_new((const gchar *)lparg0, (GtkWindow *)arg1);
1004-
fail:
1005-
if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
1006-
GTK3_NATIVE_EXIT(env, that, gtk_1font_1chooser_1dialog_1new_FUNC);
1007-
return rc;
1008-
}
1009-
#endif
1010-
1011-
#ifndef NO_gtk_1font_1chooser_1get_1font
1012-
JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1font_1chooser_1get_1font)
1013-
(JNIEnv *env, jclass that, jlong arg0)
1014-
{
1015-
jlong rc = 0;
1016-
GTK3_NATIVE_ENTER(env, that, gtk_1font_1chooser_1get_1font_FUNC);
1017-
rc = (jlong)gtk_font_chooser_get_font((GtkFontChooser *)arg0);
1018-
GTK3_NATIVE_EXIT(env, that, gtk_1font_1chooser_1get_1font_FUNC);
1019-
return rc;
1020-
}
1021-
#endif
1022-
1023-
#ifndef NO_gtk_1font_1chooser_1set_1font
1024-
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1font_1chooser_1set_1font)
1025-
(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
1026-
{
1027-
jbyte *lparg1=NULL;
1028-
GTK3_NATIVE_ENTER(env, that, gtk_1font_1chooser_1set_1font_FUNC);
1029-
if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
1030-
gtk_font_chooser_set_font((GtkFontChooser *)arg0, (const gchar *)lparg1);
1031-
fail:
1032-
if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
1033-
GTK3_NATIVE_EXIT(env, that, gtk_1font_1chooser_1set_1font_FUNC);
1034-
}
1035-
#endif
1036-
1037909
#ifndef NO_gtk_1frame_1set_1shadow_1type
1038910
JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1frame_1set_1shadow_1type)
1039911
(JNIEnv *env, jclass that, jlong arg0, jint arg1)

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

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2000, 2024 IBM Corporation and others.
2+
* Copyright (c) 2000, 2025 IBM Corporation and others.
33
*
44
* This program and the accompanying materials
55
* are made available under the terms of the Eclipse Public License 2.0
@@ -88,26 +88,17 @@ typedef enum {
8888
gtk_1event_1box_1new_FUNC,
8989
gtk_1event_1controller_1handle_1event_FUNC,
9090
gtk_1events_1pending_FUNC,
91-
gtk_1file_1chooser_1add_1filter_FUNC,
9291
gtk_1file_1chooser_1get_1filename_FUNC,
9392
gtk_1file_1chooser_1get_1filenames_FUNC,
94-
gtk_1file_1chooser_1get_1filter_FUNC,
9593
gtk_1file_1chooser_1get_1uri_FUNC,
9694
gtk_1file_1chooser_1get_1uris_FUNC,
97-
gtk_1file_1chooser_1native_1new_FUNC,
9895
gtk_1file_1chooser_1set_1current_1folder_FUNC,
9996
gtk_1file_1chooser_1set_1current_1folder_1uri_FUNC,
100-
gtk_1file_1chooser_1set_1current_1name_FUNC,
10197
gtk_1file_1chooser_1set_1do_1overwrite_1confirmation_FUNC,
10298
gtk_1file_1chooser_1set_1extra_1widget_FUNC,
10399
gtk_1file_1chooser_1set_1filename_FUNC,
104-
gtk_1file_1chooser_1set_1filter_FUNC,
105100
gtk_1file_1chooser_1set_1local_1only_FUNC,
106-
gtk_1file_1chooser_1set_1select_1multiple_FUNC,
107101
gtk_1file_1chooser_1set_1uri_FUNC,
108-
gtk_1font_1chooser_1dialog_1new_FUNC,
109-
gtk_1font_1chooser_1get_1font_FUNC,
110-
gtk_1font_1chooser_1set_1font_FUNC,
111102
gtk_1frame_1set_1shadow_1type_FUNC,
112103
gtk_1gesture_1drag_1new_FUNC,
113104
gtk_1gesture_1rotate_1new_FUNC,

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

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,54 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1expander_1set_1child)
656656
}
657657
#endif
658658

659+
#ifndef NO_gtk_1file_1chooser_1get_1file
660+
JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1chooser_1get_1file)
661+
(JNIEnv *env, jclass that, jlong arg0)
662+
{
663+
jlong rc = 0;
664+
GTK4_NATIVE_ENTER(env, that, gtk_1file_1chooser_1get_1file_FUNC);
665+
rc = (jlong)gtk_file_chooser_get_file((GtkFileChooser *)arg0);
666+
GTK4_NATIVE_EXIT(env, that, gtk_1file_1chooser_1get_1file_FUNC);
667+
return rc;
668+
}
669+
#endif
670+
671+
#ifndef NO_gtk_1file_1chooser_1get_1files
672+
JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1chooser_1get_1files)
673+
(JNIEnv *env, jclass that, jlong arg0)
674+
{
675+
jlong rc = 0;
676+
GTK4_NATIVE_ENTER(env, that, gtk_1file_1chooser_1get_1files_FUNC);
677+
rc = (jlong)gtk_file_chooser_get_files((GtkFileChooser *)arg0);
678+
GTK4_NATIVE_EXIT(env, that, gtk_1file_1chooser_1get_1files_FUNC);
679+
return rc;
680+
}
681+
#endif
682+
683+
#ifndef NO_gtk_1file_1chooser_1set_1current_1folder
684+
JNIEXPORT jboolean JNICALL GTK4_NATIVE(gtk_1file_1chooser_1set_1current_1folder)
685+
(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2)
686+
{
687+
jboolean rc = 0;
688+
GTK4_NATIVE_ENTER(env, that, gtk_1file_1chooser_1set_1current_1folder_FUNC);
689+
rc = (jboolean)gtk_file_chooser_set_current_folder((GtkFileChooser *)arg0, (GFile *)arg1, (GError **)arg2);
690+
GTK4_NATIVE_EXIT(env, that, gtk_1file_1chooser_1set_1current_1folder_FUNC);
691+
return rc;
692+
}
693+
#endif
694+
695+
#ifndef NO_gtk_1file_1chooser_1set_1file
696+
JNIEXPORT jboolean JNICALL GTK4_NATIVE(gtk_1file_1chooser_1set_1file)
697+
(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2)
698+
{
699+
jboolean rc = 0;
700+
GTK4_NATIVE_ENTER(env, that, gtk_1file_1chooser_1set_1file_FUNC);
701+
rc = (jboolean)gtk_file_chooser_set_file((GtkFileChooser *)arg0, (GFile *)arg1, (GError **)arg2);
702+
GTK4_NATIVE_EXIT(env, that, gtk_1file_1chooser_1set_1file_FUNC);
703+
return rc;
704+
}
705+
#endif
706+
659707
#ifndef NO_gtk_1file_1dialog_1get_1default_1filter
660708
JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1dialog_1get_1default_1filter)
661709
(JNIEnv *env, jclass that, jlong arg0)

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ typedef enum {
7777
gtk_1event_1controller_1motion_1new_FUNC,
7878
gtk_1event_1controller_1scroll_1new_FUNC,
7979
gtk_1expander_1set_1child_FUNC,
80+
gtk_1file_1chooser_1get_1file_FUNC,
81+
gtk_1file_1chooser_1get_1files_FUNC,
82+
gtk_1file_1chooser_1set_1current_1folder_FUNC,
83+
gtk_1file_1chooser_1set_1file_FUNC,
8084
gtk_1file_1dialog_1get_1default_1filter_FUNC,
8185
gtk_1file_1dialog_1new_FUNC,
8286
gtk_1file_1dialog_1open_FUNC,

0 commit comments

Comments
 (0)