Skip to content

Commit df3188c

Browse files
committed
[GTK] Prevent "no more handles" in Tree/Table on Gtk 4
Owner draw with check button creates custom GtkCellRendererToggle but it's final on Gtk 4.
1 parent 01081fc commit df3188c

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2552,7 +2552,11 @@ void recreateRenderers () {
25522552
if (checkRenderer != 0) {
25532553
display.removeWidget (checkRenderer);
25542554
OS.g_object_unref (checkRenderer);
2555-
checkRenderer = ownerDraw ? OS.g_object_new (display.gtk_cell_renderer_toggle_get_type(), 0) : GTK.gtk_cell_renderer_toggle_new ();
2555+
if (GTK.GTK4) {
2556+
checkRenderer = GTK.gtk_cell_renderer_toggle_new ();
2557+
} else {
2558+
checkRenderer = ownerDraw ? OS.g_object_new (display.gtk_cell_renderer_toggle_get_type(), 0) : GTK.gtk_cell_renderer_toggle_new ();
2559+
}
25562560
if (checkRenderer == 0) error (SWT.ERROR_NO_HANDLES);
25572561
OS.g_object_ref (checkRenderer);
25582562
display.addWidget (checkRenderer, this);

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2823,7 +2823,11 @@ void recreateRenderers () {
28232823
if (checkRenderer != 0) {
28242824
display.removeWidget (checkRenderer);
28252825
OS.g_object_unref (checkRenderer);
2826-
checkRenderer = isOwnerDrawn ? OS.g_object_new (display.gtk_cell_renderer_toggle_get_type(), 0) : GTK.gtk_cell_renderer_toggle_new ();
2826+
if (GTK.GTK4) {
2827+
checkRenderer = GTK.gtk_cell_renderer_toggle_new ();
2828+
} else {
2829+
checkRenderer = isOwnerDrawn ? OS.g_object_new (display.gtk_cell_renderer_toggle_get_type(), 0) : GTK.gtk_cell_renderer_toggle_new ();
2830+
}
28272831
if (checkRenderer == 0) error (SWT.ERROR_NO_HANDLES);
28282832
OS.g_object_ref (checkRenderer);
28292833
display.addWidget (checkRenderer, this);

0 commit comments

Comments
 (0)