summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT Theme
diff options
context:
space:
mode:
authorSilenio Quarti <silenio>2010-11-12 22:25:30 +0000
committerSilenio Quarti <silenio>2010-11-12 22:25:30 +0000
commit2ffe14934e7d37b24c6abb80ce27a225578b0385 (patch)
tree253d260d6d444c23eb7ba56c4dd51368253bf68b /bundles/org.eclipse.swt/Eclipse SWT Theme
parent5578265d28bd2f40f86e8af2d5b8d10f71cc17a7 (diff)
downloadeclipse.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')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/ButtonDrawData.java6
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Theme/gtk/org/eclipse/swt/internal/theme/Theme.java8
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;