Skip to content

Commit 3e00942

Browse files
committed
Fix size of DateTime widget on Gtk 4
1 parent d130569 commit 3e00942

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,20 @@ JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1editable_1set_1max_1width_1chars)
741741
}
742742
#endif
743743

744+
#ifndef NO_gtk_1editable_1set_1text
745+
JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1editable_1set_1text)
746+
(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
747+
{
748+
jbyte *lparg1=NULL;
749+
GTK4_NATIVE_ENTER(env, that, gtk_1editable_1set_1text_FUNC);
750+
if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
751+
gtk_editable_set_text((GtkEditable *)arg0, (const gchar *)lparg1);
752+
fail:
753+
if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
754+
GTK4_NATIVE_EXIT(env, that, gtk_1editable_1set_1text_FUNC);
755+
}
756+
#endif
757+
744758
#ifndef NO_gtk_1entry_1buffer_1get_1text
745759
JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1entry_1buffer_1get_1text)
746760
(JNIEnv *env, jclass that, jlong arg0)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ typedef enum {
7575
gtk_1editable_1get_1max_1width_1chars_FUNC,
7676
gtk_1editable_1get_1text_FUNC,
7777
gtk_1editable_1set_1max_1width_1chars_FUNC,
78+
gtk_1editable_1set_1text_FUNC,
7879
gtk_1entry_1buffer_1get_1text_FUNC,
7980
gtk_1entry_1get_1buffer_FUNC,
8081
gtk_1entry_1get_1text_1length_FUNC,

bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk4/GTK4.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ public class GTK4 {
129129
* @param chars cast=(int)
130130
*/
131131
public static final native void gtk_editable_set_max_width_chars(long editable, int chars);
132+
/**
133+
* @param editable cast=(GtkEditable *)
134+
* @param text cast=(const gchar *)
135+
*/
136+
public static final native void gtk_editable_set_text(long editable, byte[] text);
132137

133138
/* GtkPicture */
134139
public static final native long gtk_picture_new();

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1944,7 +1944,12 @@ void setText(String dateTimeText) {
19441944
byte[] dateTimeConverted = Converter.javaStringToCString(dateTimeText);
19451945

19461946
if (GTK.GTK4) {
1947-
GTK.gtk_entry_buffer_set_text(GTK4.gtk_text_get_buffer(textEntryHandle), dateTimeConverted, dateTimeText.length());
1947+
if (isDateWithDropDownButton()) {
1948+
GTK.gtk_entry_buffer_set_text(GTK4.gtk_text_get_buffer(textEntryHandle), dateTimeConverted, dateTimeText.length());
1949+
} else {
1950+
GTK4.gtk_editable_set_max_width_chars(handle, dateTimeText.length());
1951+
GTK4.gtk_editable_set_text(handle, dateTimeConverted);
1952+
}
19481953
} else {
19491954
//note, this is ignored if the control is in a fill-layout.
19501955
GTK3.gtk_entry_set_width_chars(textEntryHandle, dateTimeText.length());

0 commit comments

Comments
 (0)