summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
diff options
context:
space:
mode:
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.java9
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);