diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java index 1e9808b9f8..77dff77659 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java @@ -965,7 +965,7 @@ void createDisplay (DeviceData data) { if (rendererClassInitProc == 0) error (SWT.ERROR_NO_MORE_CALLBACKS); } if (rendererRenderProc == 0) { - rendererRenderCallback = new Callback (getClass (), "rendererRenderProc", 7); //$NON-NLS-1$ + rendererRenderCallback = new Callback (getClass (), "rendererRenderProc", OS.GTK_VERSION >= OS.VERSION(3, 0, 0) ? 6 : 7); //$NON-NLS-1$ rendererRenderProc = rendererRenderCallback.getAddress (); if (rendererRenderProc == 0) error (SWT.ERROR_NO_MORE_CALLBACKS); } @@ -1336,6 +1336,13 @@ static long /*int*/ rendererGetSizeProc (long /*int*/ cell, long /*int*/ handle, return 0; } +static long /*int*/ rendererRenderProc (long /*int*/ cell, long /*int*/ cr, long /*int*/ handle, long /*int*/ background_area, long /*int*/ cell_area, long /*int*/ flags) { + Display display = getCurrent (); + Widget widget = display.getWidget (handle); + if (widget != null) return widget.rendererRenderProc (cell, cr, handle, background_area, cell_area, flags); + return 0; +} + static long /*int*/ rendererRenderProc (long /*int*/ cell, long /*int*/ window, long /*int*/ handle, long /*int*/ background_area, long /*int*/ cell_area, long /*int*/ expose_area, long /*int*/ flags) { Display display = getCurrent (); Widget widget = display.getWidget (handle); |