Colorpicker cursor rendered incorrectly
Description
Color picker cursor is broken on Windows
Steps to reproduce
- Open gtk-demo binary
- Open 'Color Selector' example
- Click 'Change the above color'
- Click on color picker
- Color picker mouse cursor should have broken icon like on the image below
Current behavior and expected outcome
Version information
- Which version of GTK+ you are using: 2.24.31, compiled using MSVC 19.00.24210
- What operating system and version: Windows 10 x64
Possible solution
I've noticed that by reversing bytes in dropper_bits
and dropper_mask
arrays in gtkcolorsel.c
fixes the issue. So for example instead of 0x8f
, put 0xf1
.
That is a temporary fix. The real source of this problem could be the incorrect code for converting bits and masks to Win32 cursor bitmap in gdkcursor-win32.c
in gdk_cursor_new_from_pixmap
by also reversing the bytes.
Another, improbable, source of this issue could be CAIRO_FORMAT_A1:
each pixel is a 1-bit quantity holding an alpha value. Pixels are packed together into 32-bit quantities. The ordering of the bits matches the endianness of the platform. On a big-endian machine, the first pixel is in the uppermost bit, on a little-endian machine the first pixel is in the least-significant bit. (Since 1.0)
Source: Cairo docs