diff options
Diffstat (limited to 'bundles/org.eclipse.swt')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java | 28 | ||||
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java | 24 |
2 files changed, 23 insertions, 29 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java index f931e224f9..dba3b97d6b 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Cursor.java @@ -346,25 +346,19 @@ public Cursor(Device device, ImageData source, int hotspotX, int hotspotY) { } int /*long*/ createCursor(byte[] sourceData, byte[] maskData, int width, int height, int hotspotX, int hotspotY) { - /* Create bitmaps */ int /*long*/ sourcePixmap = OS.gdk_bitmap_create_from_data(0, sourceData, width, height); - if (sourcePixmap == 0) SWT.error(SWT.ERROR_NO_HANDLES); int /*long*/ maskPixmap = OS.gdk_bitmap_create_from_data(0, maskData, width, height); - if (maskPixmap == 0) SWT.error(SWT.ERROR_NO_HANDLES); - - /* Get the colors */ - GdkColor foreground = new GdkColor(); - foreground.red = (short)65535; - foreground.green = (short)65535; - foreground.blue = (short)65535; - GdkColor background = new GdkColor(); - - /* Create the cursor */ - int /*long*/ cursor = OS.gdk_cursor_new_from_pixmap (sourcePixmap, maskPixmap, foreground, background, hotspotX, hotspotY); - - /* Dispose the pixmaps */ - OS.g_object_unref (sourcePixmap); - OS.g_object_unref (maskPixmap); + int /*long*/ cursor = 0; + if (sourcePixmap != 0 && maskPixmap != 0) { + GdkColor foreground = new GdkColor(); + foreground.red = (short)65535; + foreground.green = (short)65535; + foreground.blue = (short)65535; + GdkColor background = new GdkColor(); + cursor = OS.gdk_cursor_new_from_pixmap (sourcePixmap, maskPixmap, foreground, background, hotspotX, hotspotY); + } + if (sourcePixmap != 0) OS.g_object_unref (sourcePixmap); + if (maskPixmap != 0) OS.g_object_unref (maskPixmap); return cursor; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java index b48fe1489f..771802160e 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java @@ -347,18 +347,18 @@ int createCursor(byte[] sourceData, byte[] maskData, int width, int height, int int drawable = OS.XDefaultRootWindow(xDisplay); int sourcePixmap = OS.XCreateBitmapFromData(xDisplay, drawable, sourceData, width, height); int maskPixmap = OS.XCreateBitmapFromData(xDisplay, drawable, maskData, width, height); - /* Get the colors */ - int screenNum = OS.XDefaultScreen(xDisplay); - XColor foreground = new XColor(); - foreground.pixel = OS.XWhitePixel(xDisplay, screenNum); - foreground.red = foreground.green = foreground.blue = (short)0xFFFF; - XColor background = new XColor(); - background.pixel = OS.XBlackPixel(xDisplay, screenNum); - /* Create the cursor */ - int cursor = OS.XCreatePixmapCursor(xDisplay, sourcePixmap, maskPixmap, foreground, background, hotspotX, hotspotY); - /* Dispose the pixmaps */ - OS.XFreePixmap(xDisplay, sourcePixmap); - OS.XFreePixmap(xDisplay, maskPixmap); + int cursor = 0; + if (sourcePixmap != 0 && maskPixmap != 0) { + int screenNum = OS.XDefaultScreen(xDisplay); + XColor foreground = new XColor(); + foreground.pixel = OS.XWhitePixel(xDisplay, screenNum); + foreground.red = foreground.green = foreground.blue = (short)0xFFFF; + XColor background = new XColor(); + background.pixel = OS.XBlackPixel(xDisplay, screenNum); + cursor = OS.XCreatePixmapCursor(xDisplay, sourcePixmap, maskPixmap, foreground, background, hotspotX, hotspotY); + } + if (sourcePixmap != 0) OS.XFreePixmap(xDisplay, sourcePixmap); + if (maskPixmap != 0) OS.XFreePixmap(xDisplay, maskPixmap); return cursor; } /** |