diff options
author | Silenio Quarti <silenio> | 2010-11-12 22:25:30 +0000 |
---|---|---|
committer | Silenio Quarti <silenio> | 2010-11-12 22:25:30 +0000 |
commit | 2ffe14934e7d37b24c6abb80ce27a225578b0385 (patch) | |
tree | 253d260d6d444c23eb7ba56c4dd51368253bf68b /bundles/org.eclipse.swt/Eclipse SWT Theme | |
parent | 5578265d28bd2f40f86e8af2d5b8d10f71cc17a7 (diff) | |
download | eclipse.platform.swt-2ffe14934e7d37b24c6abb80ce27a225578b0385.tar.gz eclipse.platform.swt-2ffe14934e7d37b24c6abb80ce27a225578b0385.tar.xz eclipse.platform.swt-2ffe14934e7d37b24c6abb80ce27a225578b0385.zip |
Bug 285101 - [CDateTime] JVM crash on first event
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Theme')
2 files changed, 12 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/ButtonDrawData.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/ButtonDrawData.java index a170c1f09d..d50ebaadb4 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/ButtonDrawData.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/ButtonDrawData.java @@ -130,17 +130,19 @@ void draw(Theme theme, GC gc, Rectangle bounds) { int border_width = OS.gtk_container_get_border_width(buttonHandle); GtkBorder default_border = new GtkBorder(); - int default_border_ptr = theme.getWidgetProperty(buttonHandle, "default-border"); + int /*long*/ default_border_ptr = theme.getBorderProperty(buttonHandle, "default-border"); if (default_border_ptr != 0) { OS.memmove(default_border, default_border_ptr, GdkRectangle.sizeof); + OS.gtk_border_free(default_border_ptr); } else { default_border.left = default_border.right = default_border.top = default_border.bottom = 1; } GtkBorder default_outside_border = new GtkBorder(); - int default_outside_border_ptr = theme.getWidgetProperty(buttonHandle, "default-outside-border"); + int /*long*/ default_outside_border_ptr = theme.getBorderProperty(buttonHandle, "default-outside-border"); if (default_outside_border_ptr != 0) { OS.memmove(default_outside_border, default_outside_border_ptr, GdkRectangle.sizeof); + OS.gtk_border_free(default_outside_border_ptr); } else { default_outside_border.left = default_outside_border.right = default_outside_border.top = default_outside_border.bottom = 0; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/Theme.java b/bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/Theme.java index a174a93105..8f01553d0b 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/Theme.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/Theme.java @@ -225,6 +225,14 @@ int getWidgetProperty(int /*long*/ handle, String name) { return result[0]; } + +int /*long*/ getBorderProperty(int /*long*/ handle, String name) { + byte[] propertyName = Converter.wcsToMbcs(null, name, true); + int /*long*/ [] result = new int /*long*/[1]; + OS.gtk_widget_style_get(handle, propertyName, result, 0); + return result[0]; +} + void transferClipping(GC gc, int /*long*/ style) { GCData data = gc.getGCData(); int /*long*/ clipRgn = data.clipRgn; |