X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b541538fa514aaecb5c988f05a7d581d49074072..c7bd016e16408bbd88a89a9089b35edcebedcb3e:/src/gtk/cursor.cpp?ds=sidebyside diff --git a/src/gtk/cursor.cpp b/src/gtk/cursor.cpp index a323e44d69..265b98cd3b 100644 --- a/src/gtk/cursor.cpp +++ b/src/gtk/cursor.cpp @@ -87,7 +87,7 @@ wxCursor::wxCursor( int cursorId ) case wxCURSOR_ARROWWAIT: case wxCURSOR_WAIT: case wxCURSOR_WATCH: gdk_cur = GDK_WATCH; break; - case wxCURSOR_SIZING: gdk_cur = GDK_FLEUR; break; + case wxCURSOR_SIZING: gdk_cur = GDK_SIZING; break; case wxCURSOR_SPRAYCAN: gdk_cur = GDK_SPRAYCAN; break; case wxCURSOR_IBEAM: gdk_cur = GDK_XTERM; break; case wxCURSOR_PENCIL: gdk_cur = GDK_PENCIL; break; @@ -178,57 +178,52 @@ wxCursor::wxCursor( const wxImage & image ) bool bHasMask = image.HasMask(); int imagebitcount = (w*h)/8; -#ifdef __WXGTK24__ - if (!gtk_check_version(2,4,0)) + if ( gdk_display_supports_cursor_color(gdk_display_get_default()) ) { - if ( gdk_display_supports_cursor_color(gdk_display_get_default()) ) + unsigned char rMask = 0, + gMask = 0, + bMask = 0; + if (bHasMask) { - unsigned char rMask = 0, - gMask = 0, - bMask = 0; - if (bHasMask) - { - rMask = image.GetMaskRed(); - gMask = image.GetMaskGreen(); - bMask = image.GetMaskBlue(); - } + rMask = image.GetMaskRed(); + gMask = image.GetMaskGreen(); + bMask = image.GetMaskBlue(); + } - GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, w, h); - unsigned char *alpha = image.HasAlpha() ? image.GetAlpha() : NULL; - unsigned char *out = gdk_pixbuf_get_pixels(pixbuf); - int rowpad = gdk_pixbuf_get_rowstride(pixbuf) - 4 * w; - for ( int y = 0; y < h; y++, out += rowpad ) + GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, w, h); + unsigned char *alpha = image.HasAlpha() ? image.GetAlpha() : NULL; + unsigned char *out = gdk_pixbuf_get_pixels(pixbuf); + int rowpad = gdk_pixbuf_get_rowstride(pixbuf) - 4 * w; + for ( int y = 0; y < h; y++, out += rowpad ) + { + for ( int x = 0; x < w; x++, out += 4, rgbBits += 3 ) { - for ( int x = 0; x < w; x++, out += 4, rgbBits += 3 ) - { - out[0] = rgbBits[0]; - out[1] = rgbBits[1]; - out[2] = rgbBits[2]; - if (bHasMask && - out[0] == rMask && out[1] == gMask && out[2] == bMask) - out[3] = 0; - else - out[3] = alpha ? *alpha : 255; - if ( alpha ) - ++alpha; - } + out[0] = rgbBits[0]; + out[1] = rgbBits[1]; + out[2] = rgbBits[2]; + if (bHasMask && + out[0] == rMask && out[1] == gMask && out[2] == bMask) + out[3] = 0; + else + out[3] = alpha ? *alpha : 255; + if ( alpha ) + ++alpha; } - - int hotSpotX, hotSpotY; - GetHotSpot(image, hotSpotX, hotSpotY); - - m_refData = new wxCursorRefData; - M_CURSORDATA->m_cursor = gdk_cursor_new_from_pixbuf - ( - gdk_display_get_default(), - pixbuf, - hotSpotX, hotSpotY - ); - g_object_unref (pixbuf); - return; } + + int hotSpotX, hotSpotY; + GetHotSpot(image, hotSpotX, hotSpotY); + + m_refData = new wxCursorRefData; + M_CURSORDATA->m_cursor = gdk_cursor_new_from_pixbuf + ( + gdk_display_get_default(), + pixbuf, + hotSpotX, hotSpotY + ); + g_object_unref (pixbuf); + return; } -#endif // GTK+ 2.4+ unsigned char * bits = new unsigned char [imagebitcount]; unsigned char * maskBits = new unsigned char [imagebitcount];